diff --git a/BuildCLI/build_android.bat b/BuildCLI/build_android.bat
new file mode 100644
index 00000000..dde33c01
--- /dev/null
+++ b/BuildCLI/build_android.bat
@@ -0,0 +1,9 @@
+cd /d %~dp0
+
+call path_define.bat
+
+%UNITYEDITOR_PATH%/Unity.exe %WORKSPACE% -logFile %BUILD_LOGFILE% -executeMethod TEngine.ReleaseTools.AutomationBuildAndroid -quit -batchmode -CustomArgs:Language=en_US; %WORKSPACE%
+
+@REM for /f "delims=[" %%i in (%BUILD_LOGFILE%) do echo %%i
+
+pause
\ No newline at end of file
diff --git a/BuildCLI/build_android.sh b/BuildCLI/build_android.sh
new file mode 100644
index 00000000..d8ba1391
--- /dev/null
+++ b/BuildCLI/build_android.sh
@@ -0,0 +1,18 @@
+#!/bin/bash
+
+cd "$(dirname "$0")"
+
+source ./path_define.sh
+
+"${UNITYEDITOR_PATH}/Unity" "${WORKSPACE}" \
+ -logFile "${BUILD_LOGFILE}" \
+ -executeMethod TEngine.ReleaseTools.AutomationBuildAndroid \
+ -quit -batchmode \
+ -CustomArgs:Language=en_US "${WORKSPACE}"
+
+while IFS= read -r line; do
+ echo "$line"
+done < "${BUILD_LOGFILE}"
+
+echo "按任意键继续..."
+read -k1
diff --git a/BuildCLI/path_define.bat b/BuildCLI/path_define.bat
new file mode 100644
index 00000000..4e20de33
--- /dev/null
+++ b/BuildCLI/path_define.bat
@@ -0,0 +1,6 @@
+cd /d %~dp0
+
+set WORKSPACE=G:/github/TEngine/UnityProject
+set UNITYEDITOR_PATH=G:/UnityEditor/2021.3.20f1c1/Editor
+set BUILD_DLL_LOGFILE=./build_dll.log
+set BUILD_LOGFILE=./build.log
diff --git a/BuildCLI/path_define.sh b/BuildCLI/path_define.sh
new file mode 100644
index 00000000..b812417b
--- /dev/null
+++ b/BuildCLI/path_define.sh
@@ -0,0 +1,14 @@
+#!/bin/bash
+
+cd "$(dirname "$0")"
+
+export WORKSPACE="/Users/your_user/github/TEngine/UnityProject" # 请替换为 macOS 上的实际路径
+export UNITYEDITOR_PATH="/Applications/Unity/Hub/Editor/2021.3.20f1c1/Unity.app/Contents/MacOS" # 请替换为 macOS 上的 Unity 路径
+export BUILD_DLL_LOGFILE="./build_dll.log"
+export BUILD_LOGFILE="./build.log"
+
+echo "环境变量已设置:"
+echo "WORKSPACE=${WORKSPACE}"
+echo "UNITYEDITOR_PATH=${UNITYEDITOR_PATH}"
+echo "BUILD_DLL_LOGFILE=${BUILD_DLL_LOGFILE}"
+echo "BUILD_LOGFILE=${BUILD_LOGFILE}"
diff --git a/Configs/GameConfig/CustomTemplate/ConfigSystem.cs b/Configs/GameConfig/CustomTemplate/ConfigSystem.cs
new file mode 100644
index 00000000..4098e05c
--- /dev/null
+++ b/Configs/GameConfig/CustomTemplate/ConfigSystem.cs
@@ -0,0 +1,50 @@
+using Luban;
+using GameBase;
+using GameConfig;
+using TEngine;
+using UnityEngine;
+
+///
+/// 配置加载器。
+///
+public class ConfigSystem : Singleton
+{
+ private bool _init = false;
+
+ private Tables _tables;
+
+ public Tables Tables
+ {
+ get
+ {
+ if (!_init)
+ {
+ Load();
+ }
+
+ return _tables;
+ }
+ }
+
+ ///
+ /// 加载配置。
+ ///
+ public void Load()
+ {
+ _tables = new Tables(LoadByteBuf);
+ _init = true;
+ }
+
+ ///
+ /// 加载二进制配置。
+ ///
+ /// FileName
+ /// ByteBuf
+ private ByteBuf LoadByteBuf(string file)
+ {
+ TextAsset textAsset = GameModule.Resource.LoadAsset(file);
+ byte[] bytes = textAsset.bytes;
+ GameModule.Resource.UnloadAsset(textAsset);
+ return new ByteBuf(bytes);
+ }
+}
\ No newline at end of file
diff --git a/Configs/GameConfig/CustomTemplate/CustomTemplate_Client_LazyLoad/cs-bin/tables.sbn b/Configs/GameConfig/CustomTemplate/CustomTemplate_Client_LazyLoad/cs-bin/tables.sbn
new file mode 100644
index 00000000..8a3718dd
--- /dev/null
+++ b/Configs/GameConfig/CustomTemplate/CustomTemplate_Client_LazyLoad/cs-bin/tables.sbn
@@ -0,0 +1,55 @@
+using Luban;
+
+{{namespace_with_grace_begin __namespace}}
+public partial class {{__name}}
+{
+ #region The Tables
+
+ {{~for table in __tables ~}}
+{{~if table.comment != '' ~}}
+ ///
+ /// {{escape_comment table.comment}}
+ ///
+{{~end~}}
+ private {{table.full_name}} m_{{table.name}};
+ public {{table.full_name}} {{format_property_name __code_style table.name}}
+ {
+ get
+ {
+ if (m_{{table.name}} == null)
+ {
+ m_{{table.name}} = new {{table.full_name}}(defaultLoader("{{table.output_data_file}}"));
+ m_{{table.name}}.ResolveRef(this);
+ }
+ return m_{{table.name}};
+ }
+ set
+ {
+ m_{{table.name}} = value;
+ m_{{table.name}}.ResolveRef(this);
+ }
+ }
+ {{~end~}}
+
+ #endregion
+
+ System.Func defaultLoader;
+
+ public {{__name}}(System.Func loader)
+ {
+ SetDefaultLoader(loader);
+ Init();
+ }
+
+ public void SetDefaultLoader(System.Func loader)
+ {
+ defaultLoader = null;
+ defaultLoader = loader;
+ }
+
+ //public partial void Init();
+
+ public void Init(){}
+}
+
+{{namespace_with_grace_end __namespace}}
\ No newline at end of file
diff --git a/Configs/GameConfig/Datas/Scene/gameScene.xlsx b/Configs/GameConfig/Datas/Scene/gameScene.xlsx
new file mode 100644
index 00000000..e15339b5
Binary files /dev/null and b/Configs/GameConfig/Datas/Scene/gameScene.xlsx differ
diff --git a/Configs/GameConfig/Datas/UI/gameUILoad.xlsx b/Configs/GameConfig/Datas/UI/gameUILoad.xlsx
new file mode 100644
index 00000000..f8dd3afc
Binary files /dev/null and b/Configs/GameConfig/Datas/UI/gameUILoad.xlsx differ
diff --git a/Configs/GameConfig/Datas/UI/gameUITip.xlsx b/Configs/GameConfig/Datas/UI/gameUITip.xlsx
new file mode 100644
index 00000000..aa8429c0
Binary files /dev/null and b/Configs/GameConfig/Datas/UI/gameUITip.xlsx differ
diff --git a/Configs/GameConfig/Datas/UI/gameUIWidget.xlsx b/Configs/GameConfig/Datas/UI/gameUIWidget.xlsx
new file mode 100644
index 00000000..a6570c5e
Binary files /dev/null and b/Configs/GameConfig/Datas/UI/gameUIWidget.xlsx differ
diff --git a/Configs/GameConfig/Datas/UI/gameUIWindows.xlsx b/Configs/GameConfig/Datas/UI/gameUIWindows.xlsx
new file mode 100644
index 00000000..e56d857a
Binary files /dev/null and b/Configs/GameConfig/Datas/UI/gameUIWindows.xlsx differ
diff --git a/Configs/GameConfig/Datas/__beans__.xlsx b/Configs/GameConfig/Datas/__beans__.xlsx
new file mode 100644
index 00000000..9fde5587
Binary files /dev/null and b/Configs/GameConfig/Datas/__beans__.xlsx differ
diff --git a/Configs/GameConfig/Datas/__enums__.xlsx b/Configs/GameConfig/Datas/__enums__.xlsx
new file mode 100644
index 00000000..5d01039a
Binary files /dev/null and b/Configs/GameConfig/Datas/__enums__.xlsx differ
diff --git a/Configs/GameConfig/Datas/__tables__.xlsx b/Configs/GameConfig/Datas/__tables__.xlsx
new file mode 100644
index 00000000..3258c0e3
Binary files /dev/null and b/Configs/GameConfig/Datas/__tables__.xlsx differ
diff --git a/Configs/GameConfig/Datas/item.xlsx b/Configs/GameConfig/Datas/item.xlsx
new file mode 100644
index 00000000..c463653e
Binary files /dev/null and b/Configs/GameConfig/Datas/item.xlsx differ
diff --git a/Configs/GameConfig/Datas/roleUnit.xlsx b/Configs/GameConfig/Datas/roleUnit.xlsx
new file mode 100644
index 00000000..42e6055b
Binary files /dev/null and b/Configs/GameConfig/Datas/roleUnit.xlsx differ
diff --git a/Configs/GameConfig/Defines/builtin.xml b/Configs/GameConfig/Defines/builtin.xml
new file mode 100644
index 00000000..e535ff48
--- /dev/null
+++ b/Configs/GameConfig/Defines/builtin.xml
@@ -0,0 +1,17 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Configs/GameConfig/gen_code_bin_to_project.bat b/Configs/GameConfig/gen_code_bin_to_project.bat
new file mode 100644
index 00000000..93e4dd03
--- /dev/null
+++ b/Configs/GameConfig/gen_code_bin_to_project.bat
@@ -0,0 +1,20 @@
+Cd /d %~dp0
+echo %CD%
+
+set WORKSPACE=../..
+set LUBAN_DLL=%WORKSPACE%\Tools\Luban\Luban.dll
+set CONF_ROOT=.
+set DATA_OUTPATH=%WORKSPACE%/EintooAR/Assets/AssetRaw/Configs/bytes/
+set CODE_OUTPATH=%WORKSPACE%/EintooAR/Assets/GameScripts/HotFix/GameProto/GameConfig/
+
+xcopy /s /e /i /y "%CONF_ROOT%\CustomTemplate\ConfigSystem.cs" "%WORKSPACE%\EintooAR\Assets\GameScripts\HotFix\GameProto\ConfigSystem.cs"
+
+dotnet %LUBAN_DLL% ^
+ -t client ^
+ -c cs-bin ^
+ -d bin^
+ --conf %CONF_ROOT%\luban.conf ^
+ -x outputCodeDir=%CODE_OUTPATH% ^
+ -x outputDataDir=%DATA_OUTPATH%
+pause
+
diff --git a/Configs/GameConfig/gen_code_bin_to_project.sh b/Configs/GameConfig/gen_code_bin_to_project.sh
new file mode 100644
index 00000000..88f683c2
--- /dev/null
+++ b/Configs/GameConfig/gen_code_bin_to_project.sh
@@ -0,0 +1,24 @@
+#!/bin/bash
+
+cd "$(dirname "$0")"
+echo "当前目录: $(pwd)"
+
+export WORKSPACE="$(realpath ../../)"
+export LUBAN_DLL="${WORKSPACE}/Tools/Luban/Luban.dll"
+export CONF_ROOT="$(pwd)"
+export DATA_OUTPATH="${WORKSPACE}/EintooAR/Assets/AssetRaw/Configs/bytes/"
+export CODE_OUTPATH="${WORKSPACE}/EintooAR/Assets/GameScripts/HotFix/GameProto/GameConfig/"
+
+cp -R "${CONF_ROOT}/CustomTemplate/ConfigSystem.cs" \
+ "${WORKSPACE}/EintooAR/Assets/GameScripts/HotFix/GameProto/ConfigSystem.cs"
+
+dotnet "${LUBAN_DLL}" \
+ -t client \
+ -c cs-bin \
+ -d bin \
+ --conf "${CONF_ROOT}/luban.conf" \
+ -x outputCodeDir="${CODE_OUTPATH}" \
+ -x outputDataDir="${DATA_OUTPATH}"
+
+echo "操作完成,按任意键退出..."
+read -k1
diff --git a/Configs/GameConfig/gen_code_bin_to_project_lazyload.bat b/Configs/GameConfig/gen_code_bin_to_project_lazyload.bat
new file mode 100644
index 00000000..0940c9f8
--- /dev/null
+++ b/Configs/GameConfig/gen_code_bin_to_project_lazyload.bat
@@ -0,0 +1,21 @@
+Cd /d %~dp0
+echo %CD%
+
+set WORKSPACE=../..
+set LUBAN_DLL=%WORKSPACE%\Tools\Luban\Luban.dll
+set CONF_ROOT=.
+set DATA_OUTPATH=%WORKSPACE%/EintooAR/Assets/AssetRaw/Configs/bytes/
+set CODE_OUTPATH=%WORKSPACE%/EintooAR/Assets/GameScripts/HotFix/GameProto/GameConfig/
+
+xcopy /s /e /i /y "%CONF_ROOT%\CustomTemplate\ConfigSystem.cs" "%WORKSPACE%\EintooAR\Assets\GameScripts\HotFix\GameProto\ConfigSystem.cs"
+
+dotnet %LUBAN_DLL% ^
+ -t client ^
+ -c cs-bin ^
+ -d bin^
+ --conf %CONF_ROOT%\luban.conf ^
+ --customTemplateDir %CONF_ROOT%\CustomTemplate\CustomTemplate_Client_LazyLoad ^
+ -x outputCodeDir=%CODE_OUTPATH% ^
+ -x outputDataDir=%DATA_OUTPATH%
+pause
+
diff --git a/Configs/GameConfig/gen_code_bin_to_project_lazyload.sh b/Configs/GameConfig/gen_code_bin_to_project_lazyload.sh
new file mode 100644
index 00000000..7324d765
--- /dev/null
+++ b/Configs/GameConfig/gen_code_bin_to_project_lazyload.sh
@@ -0,0 +1,25 @@
+#!/bin/bash
+
+cd "$(dirname "$0")"
+echo "当前目录: $(pwd)"
+
+export WORKSPACE="$(realpath ../../)"
+export LUBAN_DLL="${WORKSPACE}/Tools/Luban/Luban.dll"
+export CONF_ROOT="$(pwd)"
+export DATA_OUTPATH="${WORKSPACE}/UnityProject/Assets/AssetRaw/Configs/bytes/"
+export CODE_OUTPATH="${WORKSPACE}/UnityProject/Assets/GameScripts/HotFix/GameProto/GameConfig/"
+
+cp -R "${CONF_ROOT}/CustomTemplate/ConfigSystem.cs" \
+ "${WORKSPACE}/UnityProject/Assets/GameScripts/HotFix/GameProto/ConfigSystem.cs"
+
+dotnet "${LUBAN_DLL}" \
+ -t client \
+ -c cs-bin \
+ -d bin \
+ --conf "${CONF_ROOT}/luban.conf" \
+ --customTemplateDir "${CONF_ROOT}/CustomTemplate/CustomTemplate_Client_LazyLoad" \
+ -x outputCodeDir="${CODE_OUTPATH}" \
+ -x outputDataDir="${DATA_OUTPATH}"
+
+echo "操作完成,按任意键退出..."
+read -k1
diff --git a/Configs/GameConfig/gen_code_bin_to_server.bat b/Configs/GameConfig/gen_code_bin_to_server.bat
new file mode 100644
index 00000000..697220e7
--- /dev/null
+++ b/Configs/GameConfig/gen_code_bin_to_server.bat
@@ -0,0 +1,18 @@
+Cd /d %~dp0
+echo %CD%
+
+set WORKSPACE=../../
+set LUBAN_DLL=%WORKSPACE%/Tools/Luban/Luban.dll
+set CONF_ROOT=.
+set DATA_OUTPATH=%WORKSPACE%/Server/GameConfig
+set CODE_OUTPATH=%WORKSPACE%/Server/Hotfix/Config/GameConfig
+
+dotnet %LUBAN_DLL% ^
+ -t server^
+ -c cs-bin ^
+ -d bin^
+ --conf %CONF_ROOT%\luban.conf ^
+ -x outputCodeDir=%CODE_OUTPATH% ^
+ -x outputDataDir=%DATA_OUTPATH%
+pause
+
diff --git a/Configs/GameConfig/gen_code_bin_to_server.sh b/Configs/GameConfig/gen_code_bin_to_server.sh
new file mode 100644
index 00000000..4b257d38
--- /dev/null
+++ b/Configs/GameConfig/gen_code_bin_to_server.sh
@@ -0,0 +1,21 @@
+#!/bin/bash
+
+cd "$(dirname "$0")"
+echo "当前目录: $(pwd)"
+
+export WORKSPACE="$(realpath ../../)"
+export LUBAN_DLL="${WORKSPACE}/Tools/Luban/Luban.dll"
+export CONF_ROOT="$(pwd)"
+export DATA_OUTPATH="${WORKSPACE}/Server/GameConfig"
+export CODE_OUTPATH="${WORKSPACE}/Server/Hotfix/Config/GameConfig"
+
+dotnet "${LUBAN_DLL}" \
+ -t server \
+ -c cs-bin \
+ -d bin \
+ --conf "${CONF_ROOT}/luban.conf" \
+ -x outputCodeDir="${CODE_OUTPATH}" \
+ -x outputDataDir="${DATA_OUTPATH}"
+
+echo "操作完成,按任意键退出..."
+read -k1
diff --git a/Configs/GameConfig/luban.conf b/Configs/GameConfig/luban.conf
new file mode 100644
index 00000000..851dc679
--- /dev/null
+++ b/Configs/GameConfig/luban.conf
@@ -0,0 +1,22 @@
+{
+ "groups":
+ [
+ {"names":["c"], "default":true},
+ {"names":["s"], "default":true},
+ {"names":["e"], "default":true}
+ ],
+ "schemaFiles":
+ [
+ {"fileName":"Defines", "type":""},
+ {"fileName":"Datas/__tables__.xlsx", "type":"table"},
+ {"fileName":"Datas/__beans__.xlsx", "type":"bean"},
+ {"fileName":"Datas/__enums__.xlsx", "type":"enum"}
+ ],
+ "dataDir": "Datas",
+ "targets":
+ [
+ {"name":"server", "manager":"Tables", "groups":["s"], "topModule":"GameConfig"},
+ {"name":"client", "manager":"Tables", "groups":["c"], "topModule":"GameConfig"},
+ {"name":"all", "manager":"Tables", "groups":["c,s,e"], "topModule":"GameConfig"}
+ ]
+}
\ No newline at end of file
diff --git a/GameServer/.idea/.idea.GameServer/.idea/CopilotChatHistory.xml b/GameServer/.idea/.idea.GameServer/.idea/CopilotChatHistory.xml
new file mode 100644
index 00000000..73cbf6b4
--- /dev/null
+++ b/GameServer/.idea/.idea.GameServer/.idea/CopilotChatHistory.xml
@@ -0,0 +1,15 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/GameServer/.idea/.idea.GameServer/.idea/encodings.xml b/GameServer/.idea/.idea.GameServer/.idea/encodings.xml
new file mode 100644
index 00000000..df87cf95
--- /dev/null
+++ b/GameServer/.idea/.idea.GameServer/.idea/encodings.xml
@@ -0,0 +1,4 @@
+
+
+
+
\ No newline at end of file
diff --git a/GameServer/.idea/.idea.GameServer/.idea/indexLayout.xml b/GameServer/.idea/.idea.GameServer/.idea/indexLayout.xml
new file mode 100644
index 00000000..7b08163c
--- /dev/null
+++ b/GameServer/.idea/.idea.GameServer/.idea/indexLayout.xml
@@ -0,0 +1,8 @@
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/GameServer/.idea/.idea.GameServer/.idea/projectSettingsUpdater.xml b/GameServer/.idea/.idea.GameServer/.idea/projectSettingsUpdater.xml
new file mode 100644
index 00000000..4bb9f4d2
--- /dev/null
+++ b/GameServer/.idea/.idea.GameServer/.idea/projectSettingsUpdater.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/GameServer/.idea/.idea.GameServer/.idea/vcs.xml b/GameServer/.idea/.idea.GameServer/.idea/vcs.xml
new file mode 100644
index 00000000..6c0b8635
--- /dev/null
+++ b/GameServer/.idea/.idea.GameServer/.idea/vcs.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/GameServer/.idea/.idea.GameServer/.idea/workspace.xml b/GameServer/.idea/.idea.GameServer/.idea/workspace.xml
new file mode 100644
index 00000000..7f01cfb6
--- /dev/null
+++ b/GameServer/.idea/.idea.GameServer/.idea/workspace.xml
@@ -0,0 +1,462 @@
+
+
+
+ Main/Main.csproj
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {
+ "customColor": "",
+ "associatedIndex": 3
+}
+
+
+
+
+
+ {
+ "keyToString": {
+ "RunOnceActivity.ShowReadmeOnStart": "true",
+ "git-widget-placeholder": "main",
+ "node.js.detected.package.eslint": "true",
+ "node.js.detected.package.tslint": "true",
+ "node.js.selected.package.eslint": "(autodetect)",
+ "node.js.selected.package.tslint": "(autodetect)",
+ "nodejs_package_manager_path": "npm",
+ "vue.rearranger.settings.migration": "true"
+ },
+ "keyToStringList": {
+ "rider.external.source.directories": [
+ "C:\\Users\\Administrator\\AppData\\Roaming\\JetBrains\\Rider2024.1\\resharper-host\\DecompilerCache",
+ "C:\\Users\\Administrator\\AppData\\Roaming\\JetBrains\\Rider2024.1\\resharper-host\\SourcesCache",
+ "C:\\Users\\Administrator\\AppData\\Local\\Symbols\\src"
+ ]
+ }
+}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1737038547277
+
+
+ 1737038547277
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/GameServer/Bin/Debug/Logs/Server/Server20250331/Server..2025033117.Debug.log b/GameServer/Bin/Debug/Logs/Server/Server20250331/Server..2025033117.Debug.log
new file mode 100644
index 00000000..bc86578b
--- /dev/null
+++ b/GameServer/Bin/Debug/Logs/Server/Server20250331/Server..2025033117.Debug.log
@@ -0,0 +1,14 @@
+2025-03-31 17:00:46.1572 (OnCreateScene_InitEvent.cs:16) 初始化鉴权服务器组件
+2025-03-31 17:00:46.4719 (OnCreateScene_InitEvent.cs:16) 初始化鉴权服务器组件
+2025-03-31 17:00:46.8310 (OnCreateScene_InitEvent.cs:21) 初始网关(Gate)服务器组件
+2025-03-31 17:00:47.1807 (OnCreateScene_InitEvent.cs:21) 初始网关(Gate)服务器组件
+2025-03-31 17:02:09.5251 (AuthenticationComponentSystem.cs:130) Authentication: Login Success(登录成功),username:wangwei,password:123,source:客户端,Position:1001
+2025-03-31 17:02:10.0936 (C2G_LoginRequestHandler.cs:31) Gate校验登录成功用户116299279127281665
+2025-03-31 17:02:10.1109 (GameAccountManageComponentSystem.cs:91) Gate 当前缓存中的 SessionID 2589189449237659648
+2025-03-31 17:02:10.1109 (C2G_LoginRequestHandler.cs:43) Gate : Login 登录成功GameAccount:session2589189449237659648 AccountId:116299279127281665
+2025-03-31 17:02:10.1260 (GateLoginHelper.cs:29) 聊天服务器登录成功
+2025-03-31 17:02:10.2692 (G2C_GetGameAccountInfoHandler.cs:37) Gate: 获取账号信息 AccountId SnowShow
+2025-03-31 17:02:15.5268 (AuthenticationComponentSystem.cs:150) Authentication:Login:username:wangwei 用户移除成功 从缓存中
+2025-03-31 17:02:20.1507 (GameAccountSystem.cs:29) Gate gameAccount 下线前 保存数据到 数据库中
+2025-03-31 17:02:20.2368 (GameAccountSystem.cs:29) Gate gameAccount 下线前 保存数据到 数据库中
+2025-03-31 17:02:20.2368 (EntityTimeOutComponentSystem.cs:52) session : 0 Dispose
diff --git a/GameServer/Bin/Debug/Logs/Server/Server20250331/Server..2025033117.Info.log b/GameServer/Bin/Debug/Logs/Server/Server20250331/Server..2025033117.Info.log
new file mode 100644
index 00000000..61bdb424
--- /dev/null
+++ b/GameServer/Bin/Debug/Logs/Server/Server20250331/Server..2025033117.Info.log
@@ -0,0 +1,15 @@
+2025-03-31 17:00:45.3401 初始化序列化器成功,数量为:2
+2025-03-31 17:00:45.8794 SceneConfigId = 1001 networkTarget = Inner TCPServer Listen 127.0.0.1:11001
+2025-03-31 17:00:46.0745 SceneConfigId = 1001 networkTarget = Outer KCPServer Listen 127.0.0.1:21001
+2025-03-31 17:00:46.1572 (AuthenticationJWTComponentSystem.cs:44) RSA密钥导入成功
+2025-03-31 17:00:46.2787 SceneConfigId = 1002 networkTarget = Inner TCPServer Listen 127.0.0.1:11002
+2025-03-31 17:00:46.4719 SceneConfigId = 1002 networkTarget = Outer KCPServer Listen 127.0.0.1:21002
+2025-03-31 17:00:46.4719 (AuthenticationJWTComponentSystem.cs:44) RSA密钥导入成功
+2025-03-31 17:00:46.6685 SceneConfigId = 1010 networkTarget = Inner TCPServer Listen 127.0.0.1:11010
+2025-03-31 17:00:46.8310 SceneConfigId = 1010 networkTarget = Outer KCPServer Listen 127.0.0.1:21010
+2025-03-31 17:00:47.0177 SceneConfigId = 1011 networkTarget = Inner TCPServer Listen 127.0.0.1:11011
+2025-03-31 17:00:47.1807 SceneConfigId = 1011 networkTarget = Outer KCPServer Listen 127.0.0.1:21011
+2025-03-31 17:00:47.3679 SceneConfigId = 1026 networkTarget = Inner TCPServer Listen 127.0.0.1:11026
+2025-03-31 17:00:47.5466 SceneConfigId = 1026 networkTarget = Outer TCPServer Listen 127.0.0.1:21016
+2025-03-31 17:00:47.5466 Process:1 Startup Complete SceneCount:5
+2025-03-31 17:02:10.1109 (G2Chat_LoginRequestHandler.cs:11) 登录聊天服务器成功 SnowShow AccountId 116299279127281665 GateRoutedId 2589189449237659648
diff --git a/GameServer/Bin/Debug/Logs/Server/Server20250331/Server..2025033117.Warn.log b/GameServer/Bin/Debug/Logs/Server/Server20250331/Server..2025033117.Warn.log
new file mode 100644
index 00000000..1fba3469
--- /dev/null
+++ b/GameServer/Bin/Debug/Logs/Server/Server20250331/Server..2025033117.Warn.log
@@ -0,0 +1,2 @@
+2025-03-31 17:02:10.0936 (GateJWTComponentSystem.cs:47) Gate:Token签名校验成功
+2025-03-31 17:02:50.2889 session timeout id:132665183960301570 timeNow:1743411770288 _session.LastReceiveTime:1743411760209 _timeOut:8000
diff --git a/GameServer/Bin/Debug/Logs/Server/Server20250402/Server..2025040213.Debug.log b/GameServer/Bin/Debug/Logs/Server/Server20250402/Server..2025040213.Debug.log
new file mode 100644
index 00000000..11b55a7b
--- /dev/null
+++ b/GameServer/Bin/Debug/Logs/Server/Server20250402/Server..2025040213.Debug.log
@@ -0,0 +1,63 @@
+2025-04-02 13:41:56.4350 (OnCreateScene_InitEvent.cs:16) 初始化鉴权服务器组件
+2025-04-02 13:41:56.8252 (OnCreateScene_InitEvent.cs:16) 初始化鉴权服务器组件
+2025-04-02 13:41:57.2455 (OnCreateScene_InitEvent.cs:21) 初始网关(Gate)服务器组件
+2025-04-02 13:41:57.6834 (OnCreateScene_InitEvent.cs:21) 初始网关(Gate)服务器组件
+2025-04-02 13:42:30.5078 (AuthenticationComponentSystem.cs:130) Authentication: Login Success(登录成功),username:wangwei,password:123,source:客户端,Position:1001
+2025-04-02 13:42:31.1287 (C2G_LoginRequestHandler.cs:31) Gate校验登录成功用户116299279127281665
+2025-04-02 13:42:31.1570 (GameAccountManageComponentSystem.cs:91) Gate 当前缓存中的 SessionID 2589079498074882048
+2025-04-02 13:42:31.1570 (C2G_LoginRequestHandler.cs:43) Gate : Login 登录成功GameAccount:session2589079498074882048 AccountId:116299279127281665
+2025-04-02 13:42:31.3458 (G2C_GetGameAccountInfoHandler.cs:37) Gate: 获取账号信息 AccountId SnowShow
+2025-04-02 13:42:36.5175 (AuthenticationComponentSystem.cs:150) Authentication:Login:username:wangwei 用户移除成功 从缓存中
+2025-04-02 13:42:41.2345 (GameAccountSystem.cs:29) Gate gameAccount 下线前 保存数据到 数据库中
+2025-04-02 13:42:41.3432 (GameAccountSystem.cs:29) Gate gameAccount 下线前 保存数据到 数据库中
+2025-04-02 13:42:41.3432 (EntityTimeOutComponentSystem.cs:52) session : 0 Dispose
+2025-04-02 13:50:13.4173 (AuthenticationComponentSystem.cs:130) Authentication: Login Success(登录成功),username:wangwei,password:123,source:客户端,Position:1001
+2025-04-02 13:50:13.5916 (C2G_LoginRequestHandler.cs:31) Gate校验登录成功用户116299279127281665
+2025-04-02 13:50:13.6060 (GameAccountManageComponentSystem.cs:91) Gate 当前缓存中的 SessionID 2590097645842202624
+2025-04-02 13:50:13.6060 (C2G_LoginRequestHandler.cs:43) Gate : Login 登录成功GameAccount:session2590097645842202624 AccountId:116299279127281665
+2025-04-02 13:50:13.7916 (G2C_GetGameAccountInfoHandler.cs:37) Gate: 获取账号信息 AccountId SnowShow
+2025-04-02 13:50:19.4316 (AuthenticationComponentSystem.cs:150) Authentication:Login:username:wangwei 用户移除成功 从缓存中
+2025-04-02 13:50:23.6553 (GameAccountSystem.cs:29) Gate gameAccount 下线前 保存数据到 数据库中
+2025-04-02 13:50:23.6709 (GameAccountSystem.cs:29) Gate gameAccount 下线前 保存数据到 数据库中
+2025-04-02 13:50:23.6709 (EntityTimeOutComponentSystem.cs:52) session : 0 Dispose
+2025-04-02 13:50:55.3332 (AuthenticationComponentSystem.cs:130) Authentication: Login Success(登录成功),username:wangwei,password:123,source:客户端,Position:1001
+2025-04-02 13:50:55.4900 (C2G_LoginRequestHandler.cs:31) Gate校验登录成功用户116299279127281665
+2025-04-02 13:50:55.5046 (GameAccountManageComponentSystem.cs:91) Gate 当前缓存中的 SessionID 2590190004818935808
+2025-04-02 13:50:55.5046 (C2G_LoginRequestHandler.cs:43) Gate : Login 登录成功GameAccount:session2590190004818935808 AccountId:116299279127281665
+2025-04-02 13:50:55.6789 (G2C_GetGameAccountInfoHandler.cs:37) Gate: 获取账号信息 AccountId SnowShow
+2025-04-02 13:51:01.3336 (AuthenticationComponentSystem.cs:150) Authentication:Login:username:wangwei 用户移除成功 从缓存中
+2025-04-02 13:51:05.5539 (GameAccountSystem.cs:29) Gate gameAccount 下线前 保存数据到 数据库中
+2025-04-02 13:51:05.5693 (GameAccountSystem.cs:29) Gate gameAccount 下线前 保存数据到 数据库中
+2025-04-02 13:51:05.5693 (EntityTimeOutComponentSystem.cs:52) session : 0 Dispose
+2025-04-02 13:54:09.9398 (OnCreateScene_InitEvent.cs:16) 初始化鉴权服务器组件
+2025-04-02 13:54:10.3365 (OnCreateScene_InitEvent.cs:16) 初始化鉴权服务器组件
+2025-04-02 13:54:10.7633 (OnCreateScene_InitEvent.cs:21) 初始网关(Gate)服务器组件
+2025-04-02 13:54:11.1712 (OnCreateScene_InitEvent.cs:21) 初始网关(Gate)服务器组件
+2025-04-02 13:54:47.4816 (AuthenticationComponentSystem.cs:130) Authentication: Login Success(登录成功),username:wangwei,password:123,source:客户端,Position:1001
+2025-04-02 13:54:47.7243 (C2G_LoginRequestHandler.cs:31) Gate校验登录成功用户116299279127281665
+2025-04-02 13:54:47.7519 (GameAccountManageComponentSystem.cs:91) Gate 当前缓存中的 SessionID 2589086095144648704
+2025-04-02 13:54:47.7519 (C2G_LoginRequestHandler.cs:43) Gate : Login 登录成功GameAccount:session2589086095144648704 AccountId:116299279127281665
+2025-04-02 13:54:47.9107 (G2C_GetGameAccountInfoHandler.cs:37) Gate: 获取账号信息 AccountId SnowShow
+2025-04-02 13:54:53.4840 (AuthenticationComponentSystem.cs:150) Authentication:Login:username:wangwei 用户移除成功 从缓存中
+2025-04-02 13:54:57.7908 (GameAccountSystem.cs:29) Gate gameAccount 下线前 保存数据到 数据库中
+2025-04-02 13:54:57.8632 (GameAccountSystem.cs:29) Gate gameAccount 下线前 保存数据到 数据库中
+2025-04-02 13:54:57.8632 (EntityTimeOutComponentSystem.cs:52) session : 0 Dispose
+2025-04-02 13:56:38.1665 (OnCreateScene_InitEvent.cs:16) 初始化鉴权服务器组件
+2025-04-02 13:56:38.7117 (OnCreateScene_InitEvent.cs:16) 初始化鉴权服务器组件
+2025-04-02 13:56:39.1181 (OnCreateScene_InitEvent.cs:21) 初始网关(Gate)服务器组件
+2025-04-02 13:56:39.5632 (OnCreateScene_InitEvent.cs:21) 初始网关(Gate)服务器组件
+2025-04-02 13:56:52.6269 (AuthenticationComponentSystem.cs:130) Authentication: Login Success(登录成功),username:wangwei,password:123,source:客户端,Position:1001
+2025-04-02 13:56:52.8846 (C2G_LoginRequestHandler.cs:31) Gate校验登录成功用户116299279127281665
+2025-04-02 13:56:52.9093 (GameAccountManageComponentSystem.cs:91) Gate 当前缓存中的 SessionID 2589035517609771008
+2025-04-02 13:56:52.9093 (C2G_LoginRequestHandler.cs:43) Gate : Login 登录成功GameAccount:session2589035517609771008 AccountId:116299279127281665
+2025-04-02 13:56:53.0992 (G2C_GetGameAccountInfoHandler.cs:37) Gate: 获取账号信息 AccountId SnowShow
+2025-04-02 13:56:58.6411 (AuthenticationComponentSystem.cs:150) Authentication:Login:username:wangwei 用户移除成功 从缓存中
+2025-04-02 13:59:44.0458 (AuthenticationComponentSystem.cs:130) Authentication: Login Success(登录成功),username:wangwei,password:123,source:客户端,Position:1001
+2025-04-02 13:59:44.2333 (C2G_LoginRequestHandler.cs:31) Gate校验登录成功用户116299279127281665
+2025-04-02 13:59:44.2333 (GameAccountManageComponentSystem.cs:68) Gate account already exists(账号已存在缓存中)
+2025-04-02 13:59:44.2333 (GameAccountManageComponentSystem.cs:74) Gate 检测当前帐号和当前Session 不是同一个,2589035517609771008,$2589413749609725952
+2025-04-02 13:59:44.2333 (GameAccountManageComponentSystem.cs:91) Gate 当前缓存中的 SessionID 2589413749609725952
+2025-04-02 13:59:44.2333 (C2G_LoginRequestHandler.cs:43) Gate : Login 登录成功GameAccount:session2589413749609725952 AccountId:116299279127281665
+2025-04-02 13:59:44.2805 (GameAccountManageComponentSystem.cs:120) Gate 已经存在了销毁组件
+2025-04-02 13:59:44.4205 (G2C_GetGameAccountInfoHandler.cs:37) Gate: 获取账号信息 AccountId SnowShow
+2025-04-02 13:59:50.0590 (AuthenticationComponentSystem.cs:150) Authentication:Login:username:wangwei 用户移除成功 从缓存中
diff --git a/GameServer/Bin/Debug/Logs/Server/Server20250402/Server..2025040213.Error.log b/GameServer/Bin/Debug/Logs/Server/Server20250402/Server..2025040213.Error.log
new file mode 100644
index 00000000..ff6d61e5
--- /dev/null
+++ b/GameServer/Bin/Debug/Logs/Server/Server20250402/Server..2025040213.Error.log
@@ -0,0 +1,20 @@
+2025-04-02 13:42:32.9004 System.Exception: OuterMessageScheduler CustomRouteType session does not have an routeComponent component
+ at Fantasy.Scheduler.OuterMessageScheduler.Scheduler(Session session, APackInfo packInfo)
+ at Fantasy.Async.FTask.InnerCoroutine()
+ at Fantasy.Async.FTask.InnerCoroutine()
+ at Fantasy.Network.Session.Receive(APackInfo packInfo)
+2025-04-02 13:50:18.9664 System.Exception: OuterMessageScheduler CustomRouteType session does not have an routeComponent component
+ at Fantasy.Scheduler.OuterMessageScheduler.Scheduler(Session session, APackInfo packInfo)
+ at Fantasy.Async.FTask.InnerCoroutine()
+ at Fantasy.Async.FTask.InnerCoroutine()
+ at Fantasy.Network.Session.Receive(APackInfo packInfo)
+2025-04-02 13:55:01.7187 System.Exception: OuterMessageScheduler CustomRouteType session does not have an routeComponent component
+ at Fantasy.Scheduler.OuterMessageScheduler.Scheduler(Session session, APackInfo packInfo)
+ at Fantasy.Async.FTask.InnerCoroutine()
+ at Fantasy.Async.FTask.InnerCoroutine()
+ at Fantasy.Network.Session.Receive(APackInfo packInfo)
+2025-04-02 13:57:01.6086 System.Exception: OuterMessageScheduler CustomRouteType session does not have an routeComponent component
+ at Fantasy.Scheduler.OuterMessageScheduler.Scheduler(Session session, APackInfo packInfo)
+ at Fantasy.Async.FTask.InnerCoroutine()
+ at Fantasy.Async.FTask.InnerCoroutine()
+ at Fantasy.Network.Session.Receive(APackInfo packInfo)
diff --git a/GameServer/Bin/Debug/Logs/Server/Server20250402/Server..2025040213.Info.log b/GameServer/Bin/Debug/Logs/Server/Server20250402/Server..2025040213.Info.log
new file mode 100644
index 00000000..d059e11a
--- /dev/null
+++ b/GameServer/Bin/Debug/Logs/Server/Server20250402/Server..2025040213.Info.log
@@ -0,0 +1,48 @@
+2025-04-02 13:41:55.3716 初始化序列化器成功,数量为:2
+2025-04-02 13:41:56.0961 SceneConfigId = 1001 networkTarget = Inner TCPServer Listen 127.0.0.1:11001
+2025-04-02 13:41:56.3272 SceneConfigId = 1001 networkTarget = Outer KCPServer Listen 127.0.0.1:21001
+2025-04-02 13:41:56.4350 (AuthenticationJWTComponentSystem.cs:44) RSA密钥导入成功
+2025-04-02 13:41:56.5922 SceneConfigId = 1002 networkTarget = Inner TCPServer Listen 127.0.0.1:11002
+2025-04-02 13:41:56.8252 SceneConfigId = 1002 networkTarget = Outer KCPServer Listen 127.0.0.1:21002
+2025-04-02 13:41:56.8252 (AuthenticationJWTComponentSystem.cs:44) RSA密钥导入成功
+2025-04-02 13:41:57.0500 SceneConfigId = 1010 networkTarget = Inner TCPServer Listen 127.0.0.1:11010
+2025-04-02 13:41:57.2455 SceneConfigId = 1010 networkTarget = Outer KCPServer Listen 127.0.0.1:21010
+2025-04-02 13:41:57.4742 SceneConfigId = 1011 networkTarget = Inner TCPServer Listen 127.0.0.1:11011
+2025-04-02 13:41:57.6834 SceneConfigId = 1011 networkTarget = Outer KCPServer Listen 127.0.0.1:21011
+2025-04-02 13:41:57.9084 SceneConfigId = 1026 networkTarget = Inner TCPServer Listen 127.0.0.1:11026
+2025-04-02 13:41:58.1278 SceneConfigId = 1026 networkTarget = Outer TCPServer Listen 127.0.0.1:21016
+2025-04-02 13:41:58.1278 Process:1 Startup Complete SceneCount:5
+2025-04-02 13:42:31.1749 (G2Chat_LoginRequestHandler.cs:16) 登录聊天服务器成功 SnowShow AccountId 116299279127281665 GateRoutedId 2589079498074882048
+2025-04-02 13:50:13.6216 (G2Chat_LoginRequestHandler.cs:16) 登录聊天服务器成功 SnowShow AccountId 116299279127281665 GateRoutedId 2590097645842202624
+2025-04-02 13:50:55.5211 (G2Chat_LoginRequestHandler.cs:16) 登录聊天服务器成功 SnowShow AccountId 116299279127281665 GateRoutedId 2590190004818935808
+2025-04-02 13:54:09.0954 初始化序列化器成功,数量为:2
+2025-04-02 13:54:09.7432 SceneConfigId = 1001 networkTarget = Inner TCPServer Listen 127.0.0.1:11001
+2025-04-02 13:54:09.9266 SceneConfigId = 1001 networkTarget = Outer KCPServer Listen 127.0.0.1:21001
+2025-04-02 13:54:09.9398 (AuthenticationJWTComponentSystem.cs:44) RSA密钥导入成功
+2025-04-02 13:54:10.1454 SceneConfigId = 1002 networkTarget = Inner TCPServer Listen 127.0.0.1:11002
+2025-04-02 13:54:10.3365 SceneConfigId = 1002 networkTarget = Outer KCPServer Listen 127.0.0.1:21002
+2025-04-02 13:54:10.3365 (AuthenticationJWTComponentSystem.cs:44) RSA密钥导入成功
+2025-04-02 13:54:10.5651 SceneConfigId = 1010 networkTarget = Inner TCPServer Listen 127.0.0.1:11010
+2025-04-02 13:54:10.7633 SceneConfigId = 1010 networkTarget = Outer KCPServer Listen 127.0.0.1:21010
+2025-04-02 13:54:10.9782 SceneConfigId = 1011 networkTarget = Inner TCPServer Listen 127.0.0.1:11011
+2025-04-02 13:54:11.1712 SceneConfigId = 1011 networkTarget = Outer KCPServer Listen 127.0.0.1:21011
+2025-04-02 13:54:11.4010 SceneConfigId = 1026 networkTarget = Inner TCPServer Listen 127.0.0.1:11026
+2025-04-02 13:54:11.6146 SceneConfigId = 1026 networkTarget = Outer TCPServer Listen 127.0.0.1:21016
+2025-04-02 13:54:11.6146 Process:1 Startup Complete SceneCount:5
+2025-04-02 13:54:47.7636 (G2Chat_LoginRequestHandler.cs:17) 登录聊天服务器成功 SnowShow AccountId 116299279127281665 GateRoutedId 2589086095144648704
+2025-04-02 13:56:37.0646 初始化序列化器成功,数量为:2
+2025-04-02 13:56:37.8792 SceneConfigId = 1001 networkTarget = Inner TCPServer Listen 127.0.0.1:11001
+2025-04-02 13:56:38.1452 SceneConfigId = 1001 networkTarget = Outer KCPServer Listen 127.0.0.1:21001
+2025-04-02 13:56:38.1665 (AuthenticationJWTComponentSystem.cs:44) RSA密钥导入成功
+2025-04-02 13:56:38.4628 SceneConfigId = 1002 networkTarget = Inner TCPServer Listen 127.0.0.1:11002
+2025-04-02 13:56:38.7117 SceneConfigId = 1002 networkTarget = Outer KCPServer Listen 127.0.0.1:21002
+2025-04-02 13:56:38.7117 (AuthenticationJWTComponentSystem.cs:44) RSA密钥导入成功
+2025-04-02 13:56:38.9304 SceneConfigId = 1010 networkTarget = Inner TCPServer Listen 127.0.0.1:11010
+2025-04-02 13:56:39.1181 SceneConfigId = 1010 networkTarget = Outer KCPServer Listen 127.0.0.1:21010
+2025-04-02 13:56:39.3678 SceneConfigId = 1011 networkTarget = Inner TCPServer Listen 127.0.0.1:11011
+2025-04-02 13:56:39.5632 SceneConfigId = 1011 networkTarget = Outer KCPServer Listen 127.0.0.1:21011
+2025-04-02 13:56:39.7691 SceneConfigId = 1026 networkTarget = Inner TCPServer Listen 127.0.0.1:11026
+2025-04-02 13:56:39.9746 SceneConfigId = 1026 networkTarget = Outer TCPServer Listen 127.0.0.1:21016
+2025-04-02 13:56:39.9746 Process:1 Startup Complete SceneCount:5
+2025-04-02 13:56:52.9277 (G2Chat_LoginRequestHandler.cs:17) 登录聊天服务器成功 SnowShow AccountId 116299279127281665 GateRoutedId 2589035517609771008
+2025-04-02 13:59:44.2479 (G2Chat_LoginRequestHandler.cs:17) 登录聊天服务器成功 SnowShow AccountId 116299279127281665 GateRoutedId 2589413749609725952
diff --git a/GameServer/Bin/Debug/Logs/Server/Server20250402/Server..2025040213.Warn.log b/GameServer/Bin/Debug/Logs/Server/Server20250402/Server..2025040213.Warn.log
new file mode 100644
index 00000000..2bee5003
--- /dev/null
+++ b/GameServer/Bin/Debug/Logs/Server/Server20250402/Server..2025040213.Warn.log
@@ -0,0 +1,6 @@
+2025-04-02 13:42:31.1287 (GateJWTComponentSystem.cs:47) Gate:Token签名校验成功
+2025-04-02 13:50:13.5916 (GateJWTComponentSystem.cs:47) Gate:Token签名校验成功
+2025-04-02 13:50:55.4900 (GateJWTComponentSystem.cs:47) Gate:Token签名校验成功
+2025-04-02 13:54:47.7243 (GateJWTComponentSystem.cs:47) Gate:Token签名校验成功
+2025-04-02 13:56:52.8846 (GateJWTComponentSystem.cs:47) Gate:Token签名校验成功
+2025-04-02 13:59:44.2333 (GateJWTComponentSystem.cs:47) Gate:Token签名校验成功
diff --git a/GameServer/Bin/Debug/Logs/Server/Server20250402/Server..2025040214.Debug.log b/GameServer/Bin/Debug/Logs/Server/Server20250402/Server..2025040214.Debug.log
new file mode 100644
index 00000000..2c9bdbd9
--- /dev/null
+++ b/GameServer/Bin/Debug/Logs/Server/Server20250402/Server..2025040214.Debug.log
@@ -0,0 +1,31 @@
+2025-04-02 14:01:52.9745 (GameAccountSystem.cs:29) Gate gameAccount 下线前 保存数据到 数据库中
+2025-04-02 14:01:53.0686 (GameAccountSystem.cs:29) Gate gameAccount 下线前 保存数据到 数据库中
+2025-04-02 14:01:53.0701 (EntityTimeOutComponentSystem.cs:52) session : 0 Dispose
+2025-04-02 14:02:25.3077 (AuthenticationComponentSystem.cs:130) Authentication: Login Success(登录成功),username:wangwei,password:123,source:客户端,Position:1001
+2025-04-02 14:02:25.4630 (C2G_LoginRequestHandler.cs:31) Gate校验登录成功用户116299279127281665
+2025-04-02 14:02:25.4630 (GameAccountManageComponentSystem.cs:91) Gate 当前缓存中的 SessionID 2589767792353869824
+2025-04-02 14:02:25.4630 (C2G_LoginRequestHandler.cs:43) Gate : Login 登录成功GameAccount:session2589767792353869824 AccountId:116299279127281665
+2025-04-02 14:02:25.6276 (G2C_GetGameAccountInfoHandler.cs:37) Gate: 获取账号信息 AccountId SnowShow
+2025-04-02 14:02:31.3079 (AuthenticationComponentSystem.cs:150) Authentication:Login:username:wangwei 用户移除成功 从缓存中
+2025-04-02 14:03:53.3827 (AuthenticationComponentSystem.cs:130) Authentication: Login Success(登录成功),username:wangwei,password:123,source:客户端,Position:1001
+2025-04-02 14:03:53.5517 (C2G_LoginRequestHandler.cs:31) Gate校验登录成功用户116299279127281665
+2025-04-02 14:03:53.5517 (GameAccountManageComponentSystem.cs:68) Gate account already exists(账号已存在缓存中)
+2025-04-02 14:03:53.5517 (GameAccountManageComponentSystem.cs:74) Gate 检测当前帐号和当前Session 不是同一个,2589767792353869824,$2589961306400358400
+2025-04-02 14:03:53.5517 (GameAccountManageComponentSystem.cs:91) Gate 当前缓存中的 SessionID 2589961306400358400
+2025-04-02 14:03:53.5517 (C2G_LoginRequestHandler.cs:43) Gate : Login 登录成功GameAccount:session2589961306400358400 AccountId:116299279127281665
+2025-04-02 14:03:53.5986 (G2C_GetGameAccountInfoHandler.cs:37) Gate: 获取账号信息 AccountId SnowShow
+2025-04-02 14:03:59.3836 (AuthenticationComponentSystem.cs:150) Authentication:Login:username:wangwei 用户移除成功 从缓存中
+2025-04-02 14:04:01.1342 (GameAccountManageComponentSystem.cs:120) Gate 已经存在了销毁组件
+2025-04-02 14:06:54.2586 (OnCreateScene_InitEvent.cs:16) 初始化鉴权服务器组件
+2025-04-02 14:06:54.6631 (OnCreateScene_InitEvent.cs:16) 初始化鉴权服务器组件
+2025-04-02 14:06:55.0707 (OnCreateScene_InitEvent.cs:21) 初始网关(Gate)服务器组件
+2025-04-02 14:06:55.4956 (OnCreateScene_InitEvent.cs:21) 初始网关(Gate)服务器组件
+2025-04-02 14:07:04.2879 (AuthenticationComponentSystem.cs:130) Authentication: Login Success(登录成功),username:wangwei,password:123,source:客户端,Position:1001
+2025-04-02 14:07:04.5229 (C2G_LoginRequestHandler.cs:31) Gate校验登录成功用户116299279127281665
+2025-04-02 14:07:04.5478 (GameAccountManageComponentSystem.cs:91) Gate 当前缓存中的 SessionID 2589026721516748800
+2025-04-02 14:07:04.5478 (C2G_LoginRequestHandler.cs:43) Gate : Login 登录成功GameAccount:session2589026721516748800 AccountId:116299279127281665
+2025-04-02 14:07:04.5848 (G2C_GetGameAccountInfoHandler.cs:37) Gate: 获取账号信息 AccountId SnowShow
+2025-04-02 14:07:10.2889 (AuthenticationComponentSystem.cs:150) Authentication:Login:username:wangwei 用户移除成功 从缓存中
+2025-04-02 14:12:29.5101 (GameAccountSystem.cs:29) Gate gameAccount 下线前 保存数据到 数据库中
+2025-04-02 14:12:29.5875 (GameAccountSystem.cs:29) Gate gameAccount 下线前 保存数据到 数据库中
+2025-04-02 14:12:29.5875 (EntityTimeOutComponentSystem.cs:52) session : 0 Dispose
diff --git a/GameServer/Bin/Debug/Logs/Server/Server20250402/Server..2025040214.Error.log b/GameServer/Bin/Debug/Logs/Server/Server20250402/Server..2025040214.Error.log
new file mode 100644
index 00000000..adeac7b8
--- /dev/null
+++ b/GameServer/Bin/Debug/Logs/Server/Server20250402/Server..2025040214.Error.log
@@ -0,0 +1,24 @@
+2025-04-02 14:02:35.9291 System.Exception: OuterMessageScheduler CustomRouteType session does not have an routeComponent component
+ at Fantasy.Scheduler.OuterMessageScheduler.Scheduler(Session session, APackInfo packInfo)
+ at Fantasy.Async.FTask.InnerCoroutine()
+ at Fantasy.Async.FTask.InnerCoroutine()
+ at Fantasy.Network.Session.Receive(APackInfo packInfo)
+2025-04-02 14:04:01.1342 CallInnerRoute routeId == 0
+ at Fantasy.Scheduler.NetworkMessagingComponent.CallInnerRoute(Int64 routeId, Type requestType, APackInfo packInfo)
+ at Fantasy.Scheduler.NetworkMessagingComponent.CallInnerRoute(Int64 routeId, Type requestType, APackInfo packInfo)
+ at Fantasy.Scheduler.OuterMessageScheduler.Scheduler(Session session, APackInfo packInfo)
+ at Fantasy.Network.Session.Receive(APackInfo packInfo)
+ at Fantasy.Network.KCP.KCPServerNetworkChannel.Input(ReadOnlyMemory`1 buffer)
+ at Fantasy.Network.KCP.KCPServerNetwork.ReadPipeDataAsync()
+ at System.IO.Pipelines.Pipe.ExecuteWithoutExecutionContext(Object state)
+ at Fantasy.ThreadSynchronizationContext.Update()
+ at Fantasy.MultiThreadScheduler.Loop(Scene scene, CancellationToken cancellationToken)
+ at Fantasy.MultiThreadScheduler.<>c__DisplayClass5_0.b__0()
+
+2025-04-02 14:04:01.1342 System.NullReferenceException: Object reference not set to an instance of an object.
+ at System.Object.GetType()
+ at Fantasy.Network.Session.Send(IMessage message, UInt32 rpcId, Int64 routeId)
+ at Fantasy.Scheduler.OuterMessageScheduler.Scheduler(Session session, APackInfo packInfo)
+ at Fantasy.Async.FTask.InnerCoroutine()
+ at Fantasy.Async.FTask.InnerCoroutine()
+ at Fantasy.Network.Session.Receive(APackInfo packInfo)
diff --git a/GameServer/Bin/Debug/Logs/Server/Server20250402/Server..2025040214.Info.log b/GameServer/Bin/Debug/Logs/Server/Server20250402/Server..2025040214.Info.log
new file mode 100644
index 00000000..bd13bdd6
--- /dev/null
+++ b/GameServer/Bin/Debug/Logs/Server/Server20250402/Server..2025040214.Info.log
@@ -0,0 +1,18 @@
+2025-04-02 14:02:25.4630 (G2Chat_LoginRequestHandler.cs:17) 登录聊天服务器成功 SnowShow AccountId 116299279127281665 GateRoutedId 2589767792353869824
+2025-04-02 14:03:53.5517 (G2Chat_LoginRequestHandler.cs:17) 登录聊天服务器成功 SnowShow AccountId 116299279127281665 GateRoutedId 2589961306400358400
+2025-04-02 14:06:53.3342 初始化序列化器成功,数量为:2
+2025-04-02 14:06:54.0008 SceneConfigId = 1001 networkTarget = Inner TCPServer Listen 127.0.0.1:11001
+2025-04-02 14:06:54.2429 SceneConfigId = 1001 networkTarget = Outer KCPServer Listen 127.0.0.1:21001
+2025-04-02 14:06:54.2586 (AuthenticationJWTComponentSystem.cs:44) RSA密钥导入成功
+2025-04-02 14:06:54.4624 SceneConfigId = 1002 networkTarget = Inner TCPServer Listen 127.0.0.1:11002
+2025-04-02 14:06:54.6609 SceneConfigId = 1002 networkTarget = Outer KCPServer Listen 127.0.0.1:21002
+2025-04-02 14:06:54.6609 (AuthenticationJWTComponentSystem.cs:44) RSA密钥导入成功
+2025-04-02 14:06:54.8813 SceneConfigId = 1010 networkTarget = Inner TCPServer Listen 127.0.0.1:11010
+2025-04-02 14:06:55.0685 SceneConfigId = 1010 networkTarget = Outer KCPServer Listen 127.0.0.1:21010
+2025-04-02 14:06:55.2964 SceneConfigId = 1011 networkTarget = Inner TCPServer Listen 127.0.0.1:11011
+2025-04-02 14:06:55.4956 SceneConfigId = 1011 networkTarget = Outer KCPServer Listen 127.0.0.1:21011
+2025-04-02 14:06:55.7100 SceneConfigId = 1026 networkTarget = Inner TCPServer Listen 127.0.0.1:11026
+2025-04-02 14:06:55.9173 SceneConfigId = 1026 networkTarget = Outer TCPServer Listen 127.0.0.1:21016
+2025-04-02 14:06:55.9173 Process:1 Startup Complete SceneCount:5
+2025-04-02 14:07:04.5595 (G2Chat_LoginRequestHandler.cs:19) 登录聊天服务器成功 SnowShow AccountId 116299279127281665 GateRoutedId 2589026721516748800
+2025-04-02 14:07:07.6648 (C2Chat_TestRequestHandler.cs:11) chatUnitSnowShow AccountId:116299279127281665
diff --git a/GameServer/Bin/Debug/Logs/Server/Server20250402/Server..2025040214.Warn.log b/GameServer/Bin/Debug/Logs/Server/Server20250402/Server..2025040214.Warn.log
new file mode 100644
index 00000000..1b21af42
--- /dev/null
+++ b/GameServer/Bin/Debug/Logs/Server/Server20250402/Server..2025040214.Warn.log
@@ -0,0 +1,5 @@
+2025-04-02 14:01:49.4619 session timeout id:135445814507208705 timeNow:1743573709461 _session.LastReceiveTime:1743573699090 _timeOut:8000
+2025-04-02 14:02:25.4630 (GateJWTComponentSystem.cs:47) Gate:Token签名校验成功
+2025-04-02 14:03:53.5517 (GateJWTComponentSystem.cs:47) Gate:Token签名校验成功
+2025-04-02 14:07:04.5229 (GateJWTComponentSystem.cs:47) Gate:Token签名校验成功
+2025-04-02 14:07:29.4938 session timeout id:135453373649649664 timeNow:1743574049493 _session.LastReceiveTime:1743574038406 _timeOut:8000
diff --git a/GameServer/Bin/Debug/Logs/Server/Server20250402/Server..2025040216.Debug.log b/GameServer/Bin/Debug/Logs/Server/Server20250402/Server..2025040216.Debug.log
new file mode 100644
index 00000000..20989f70
--- /dev/null
+++ b/GameServer/Bin/Debug/Logs/Server/Server20250402/Server..2025040216.Debug.log
@@ -0,0 +1,10 @@
+2025-04-02 16:59:26.8261 (OnCreateScene_InitEvent.cs:16) 初始化鉴权服务器组件
+2025-04-02 16:59:27.2194 (OnCreateScene_InitEvent.cs:16) 初始化鉴权服务器组件
+2025-04-02 16:59:27.6185 (OnCreateScene_InitEvent.cs:21) 初始网关(Gate)服务器组件
+2025-04-02 16:59:28.0036 (OnCreateScene_InitEvent.cs:21) 初始网关(Gate)服务器组件
+2025-04-02 16:59:50.0545 (AuthenticationComponentSystem.cs:130) Authentication: Login Success(登录成功),username:wangwei,password:123,source:客户端,Position:1001
+2025-04-02 16:59:50.2974 (C2G_LoginRequestHandler.cs:31) Gate校验登录成功用户116299279127281665
+2025-04-02 16:59:50.3233 (GameAccountManageComponentSystem.cs:102) Gate 当前缓存中的 SessionID 2589055308819070976
+2025-04-02 16:59:50.3233 (C2G_LoginRequestHandler.cs:43) Gate : Login 登录成功GameAccount:session2589055308819070976 AccountId:116299279127281665
+2025-04-02 16:59:50.3575 (G2C_GetGameAccountInfoHandler.cs:37) Gate: 获取账号信息 AccountId SnowShow
+2025-04-02 16:59:56.0574 (AuthenticationComponentSystem.cs:150) Authentication:Login:username:wangwei 用户移除成功 从缓存中
diff --git a/GameServer/Bin/Debug/Logs/Server/Server20250402/Server..2025040216.Error.log b/GameServer/Bin/Debug/Logs/Server/Server20250402/Server..2025040216.Error.log
new file mode 100644
index 00000000..486d21d8
--- /dev/null
+++ b/GameServer/Bin/Debug/Logs/Server/Server20250402/Server..2025040216.Error.log
@@ -0,0 +1,18 @@
+2025-04-02 16:56:15.4982 System.ArgumentException: An item with the same key has already been added. Key: Fantasy.G2Chat_LoginRequest
+ at System.Collections.Generic.Dictionary`2.TryInsert(TKey key, TValue value, InsertionBehavior behavior)
+ at System.Collections.Generic.Dictionary`2.Add(TKey key, TValue value)
+ at Fantasy.Network.Interface.MessageDispatcherComponent.LoadInner(Int64 assemblyIdentity)
+ at Fantasy.Network.Interface.MessageDispatcherComponent.<>c__DisplayClass16_0.b__0()
+ at Fantasy.ThreadSynchronizationContext.Update()
+2025-04-02 16:56:33.3541 System.ArgumentException: An item with the same key has already been added. Key: Fantasy.G2Chat_LoginRequest
+ at System.Collections.Generic.Dictionary`2.TryInsert(TKey key, TValue value, InsertionBehavior behavior)
+ at System.Collections.Generic.Dictionary`2.Add(TKey key, TValue value)
+ at Fantasy.Network.Interface.MessageDispatcherComponent.LoadInner(Int64 assemblyIdentity)
+ at Fantasy.Network.Interface.MessageDispatcherComponent.<>c__DisplayClass16_0.b__0()
+ at Fantasy.ThreadSynchronizationContext.Update()
+2025-04-02 16:57:58.0473 System.ArgumentException: An item with the same key has already been added. Key: Fantasy.G2Chat_LoginRequest
+ at System.Collections.Generic.Dictionary`2.TryInsert(TKey key, TValue value, InsertionBehavior behavior)
+ at System.Collections.Generic.Dictionary`2.Add(TKey key, TValue value)
+ at Fantasy.Network.Interface.MessageDispatcherComponent.LoadInner(Int64 assemblyIdentity)
+ at Fantasy.Network.Interface.MessageDispatcherComponent.<>c__DisplayClass16_0.b__0()
+ at Fantasy.ThreadSynchronizationContext.Update()
diff --git a/GameServer/Bin/Debug/Logs/Server/Server20250402/Server..2025040216.Info.log b/GameServer/Bin/Debug/Logs/Server/Server20250402/Server..2025040216.Info.log
new file mode 100644
index 00000000..24f4b4a9
--- /dev/null
+++ b/GameServer/Bin/Debug/Logs/Server/Server20250402/Server..2025040216.Info.log
@@ -0,0 +1,18 @@
+2025-04-02 16:56:15.4342 初始化序列化器成功,数量为:2
+2025-04-02 16:56:33.3030 初始化序列化器成功,数量为:2
+2025-04-02 16:57:57.9899 初始化序列化器成功,数量为:2
+2025-04-02 16:59:26.0246 初始化序列化器成功,数量为:2
+2025-04-02 16:59:26.5981 SceneConfigId = 1001 networkTarget = Inner TCPServer Listen 127.0.0.1:11001
+2025-04-02 16:59:26.8136 SceneConfigId = 1001 networkTarget = Outer KCPServer Listen 127.0.0.1:21001
+2025-04-02 16:59:26.8261 (AuthenticationJWTComponentSystem.cs:44) RSA密钥导入成功
+2025-04-02 16:59:27.0291 SceneConfigId = 1002 networkTarget = Inner TCPServer Listen 127.0.0.1:11002
+2025-04-02 16:59:27.2194 SceneConfigId = 1002 networkTarget = Outer KCPServer Listen 127.0.0.1:21002
+2025-04-02 16:59:27.2194 (AuthenticationJWTComponentSystem.cs:44) RSA密钥导入成功
+2025-04-02 16:59:27.4309 SceneConfigId = 1010 networkTarget = Inner TCPServer Listen 127.0.0.1:11010
+2025-04-02 16:59:27.6160 SceneConfigId = 1010 networkTarget = Outer KCPServer Listen 127.0.0.1:21010
+2025-04-02 16:59:27.8212 SceneConfigId = 1011 networkTarget = Inner TCPServer Listen 127.0.0.1:11011
+2025-04-02 16:59:28.0036 SceneConfigId = 1011 networkTarget = Outer KCPServer Listen 127.0.0.1:21011
+2025-04-02 16:59:28.2123 SceneConfigId = 1026 networkTarget = Inner TCPServer Listen 127.0.0.1:11026
+2025-04-02 16:59:28.4153 SceneConfigId = 1026 networkTarget = Outer TCPServer Listen 127.0.0.1:21016
+2025-04-02 16:59:28.4153 Process:1 Startup Complete SceneCount:5
+2025-04-02 16:59:50.3361 (G2Chat_LoginRequestHandler.cs:19) 登录聊天服务器成功 SnowShow AccountId 116299279127281665 GateRoutedId 2589055308819070976
diff --git a/GameServer/Bin/Debug/Logs/Server/Server20250402/Server..2025040216.Warn.log b/GameServer/Bin/Debug/Logs/Server/Server20250402/Server..2025040216.Warn.log
new file mode 100644
index 00000000..fcd38eb2
--- /dev/null
+++ b/GameServer/Bin/Debug/Logs/Server/Server20250402/Server..2025040216.Warn.log
@@ -0,0 +1 @@
+2025-04-02 16:59:50.2974 (GateJWTComponentSystem.cs:47) Gate:Token签名校验成功
diff --git a/GameServer/Bin/Debug/Logs/Server/Server20250402/Server..2025040217.Debug.log b/GameServer/Bin/Debug/Logs/Server/Server20250402/Server..2025040217.Debug.log
new file mode 100644
index 00000000..3426b9e0
--- /dev/null
+++ b/GameServer/Bin/Debug/Logs/Server/Server20250402/Server..2025040217.Debug.log
@@ -0,0 +1,36 @@
+2025-04-02 17:01:45.9357 (OnCreateScene_InitEvent.cs:16) 初始化鉴权服务器组件
+2025-04-02 17:01:46.3516 (OnCreateScene_InitEvent.cs:16) 初始化鉴权服务器组件
+2025-04-02 17:01:46.7610 (OnCreateScene_InitEvent.cs:21) 初始网关(Gate)服务器组件
+2025-04-02 17:01:47.1682 (OnCreateScene_InitEvent.cs:21) 初始网关(Gate)服务器组件
+2025-04-02 17:01:53.9070 (AuthenticationComponentSystem.cs:130) Authentication: Login Success(登录成功),username:wangwei,password:123,source:客户端,Position:1001
+2025-04-02 17:01:54.1413 (C2G_LoginRequestHandler.cs:31) Gate校验登录成功用户116299279127281665
+2025-04-02 17:01:54.1677 (GameAccountManageComponentSystem.cs:102) Gate 当前缓存中的 SessionID 2589022323470237696
+2025-04-02 17:01:54.1677 (C2G_LoginRequestHandler.cs:43) Gate : Login 登录成功GameAccount:session2589022323470237696 AccountId:116299279127281665
+2025-04-02 17:01:54.2161 (G2C_GetGameAccountInfoHandler.cs:37) Gate: 获取账号信息 AccountId SnowShow
+2025-04-02 17:01:59.9082 (AuthenticationComponentSystem.cs:150) Authentication:Login:username:wangwei 用户移除成功 从缓存中
+2025-04-02 17:07:26.4240 (OnCreateScene_InitEvent.cs:16) 初始化鉴权服务器组件
+2025-04-02 17:07:26.8215 (OnCreateScene_InitEvent.cs:16) 初始化鉴权服务器组件
+2025-04-02 17:07:27.2296 (OnCreateScene_InitEvent.cs:21) 初始网关(Gate)服务器组件
+2025-04-02 17:07:27.6696 (OnCreateScene_InitEvent.cs:21) 初始网关(Gate)服务器组件
+2025-04-02 17:08:09.7733 (AuthenticationComponentSystem.cs:130) Authentication: Login Success(登录成功),username:wangwei,password:123,source:客户端,Position:1001
+2025-04-02 17:08:10.0083 (C2G_LoginRequestHandler.cs:31) Gate校验登录成功用户116299279127281665
+2025-04-02 17:08:10.0360 (GameAccountManageComponentSystem.cs:102) Gate 当前缓存中的 SessionID 2589099289284182016
+2025-04-02 17:08:10.0360 (C2G_LoginRequestHandler.cs:43) Gate : Login 登录成功GameAccount:session2589099289284182016 AccountId:116299279127281665
+2025-04-02 17:08:10.0743 (G2C_GetGameAccountInfoHandler.cs:37) Gate: 获取账号信息 AccountId SnowShow
+2025-04-02 17:08:15.7752 (AuthenticationComponentSystem.cs:150) Authentication:Login:username:wangwei 用户移除成功 从缓存中
+2025-04-02 17:09:14.9881 (GameAccountSystem.cs:29) Gate gameAccount 下线前 保存数据到 数据库中
+2025-04-02 17:11:49.9873 (OnCreateScene_InitEvent.cs:16) 初始化鉴权服务器组件
+2025-04-02 17:11:50.4176 (OnCreateScene_InitEvent.cs:16) 初始化鉴权服务器组件
+2025-04-02 17:11:50.8359 (OnCreateScene_InitEvent.cs:21) 初始网关(Gate)服务器组件
+2025-04-02 17:11:51.2496 (OnCreateScene_InitEvent.cs:21) 初始网关(Gate)服务器组件
+2025-04-02 17:12:24.3154 (AuthenticationComponentSystem.cs:130) Authentication: Login Success(登录成功),username:wangwei,password:123,source:客户端,Position:1001
+2025-04-02 17:12:24.5750 (C2G_LoginRequestHandler.cs:31) Gate校验登录成功用户116299279127281665
+2025-04-02 17:12:24.6011 (GameAccountManageComponentSystem.cs:102) Gate 当前缓存中的 SessionID 2589079498074882048
+2025-04-02 17:12:24.6011 (C2G_LoginRequestHandler.cs:43) Gate : Login 登录成功GameAccount:session2589079498074882048 AccountId:116299279127281665
+2025-04-02 17:12:24.6390 (G2C_GetGameAccountInfoHandler.cs:37) Gate: 获取账号信息 AccountId SnowShow
+2025-04-02 17:12:30.3167 (AuthenticationComponentSystem.cs:150) Authentication:Login:username:wangwei 用户移除成功 从缓存中
+2025-04-02 17:12:54.5523 (GameAccountSystem.cs:29) Gate gameAccount 下线前 保存数据到 数据库中
+2025-04-02 17:12:54.6171 (G2Chat_OfflineRequestHandler.cs:11) chat : 聊天服务器SnowShow 下线
+2025-04-02 17:12:54.6171 (GateLoginHelper.cs:44) Gate : chat聊天服务器下线成功
+2025-04-02 17:12:54.6171 (GameAccountSystem.cs:29) Gate gameAccount 下线前 保存数据到 数据库中
+2025-04-02 17:12:54.6171 (EntityTimeOutComponentSystem.cs:52) session : 0 Dispose
diff --git a/GameServer/Bin/Debug/Logs/Server/Server20250402/Server..2025040217.Error.log b/GameServer/Bin/Debug/Logs/Server/Server20250402/Server..2025040217.Error.log
new file mode 100644
index 00000000..8e0e9b2e
--- /dev/null
+++ b/GameServer/Bin/Debug/Logs/Server/Server20250402/Server..2025040217.Error.log
@@ -0,0 +1,31 @@
+2025-04-02 17:09:15.0026 Fantasy.Timer.TimerComponent Update Error MongoDB.Bson.BsonSerializationException: An error occurred while serializing the Routes field of class Fantasy.GameAccount: When using DictionaryRepresentation.Document key values must serialize as strings.
+ ---> MongoDB.Bson.BsonSerializationException: When using DictionaryRepresentation.Document key values must serialize as strings.
+ at MongoDB.Bson.Serialization.Serializers.DictionarySerializerBase`3.SerializeKeyString(TKey key)
+ at MongoDB.Bson.Serialization.Serializers.DictionarySerializerBase`3.SerializeDocumentRepresentation(BsonSerializationContext context, TDictionary value)
+ at MongoDB.Bson.Serialization.Serializers.DictionarySerializerBase`3.SerializeValue(BsonSerializationContext context, BsonSerializationArgs args, TDictionary value)
+ at MongoDB.Bson.Serialization.Serializers.ClassSerializerBase`1.Serialize(BsonSerializationContext context, BsonSerializationArgs args, TValue value)
+ at MongoDB.Bson.Serialization.IBsonSerializerExtensions.Serialize(IBsonSerializer serializer, BsonSerializationContext context, Object value)
+ at MongoDB.Bson.Serialization.BsonClassMapSerializer`1.SerializeNormalMember(BsonSerializationContext context, Object obj, BsonMemberMap memberMap)
+ at MongoDB.Bson.Serialization.BsonClassMapSerializer`1.SerializeMember(BsonSerializationContext context, Object obj, BsonMemberMap memberMap)
+ --- End of inner exception stack trace ---
+ at MongoDB.Bson.Serialization.BsonClassMapSerializer`1.SerializeMember(BsonSerializationContext context, Object obj, BsonMemberMap memberMap)
+ at MongoDB.Bson.Serialization.BsonClassMapSerializer`1.SerializeClass(BsonSerializationContext context, BsonSerializationArgs args, TClass document)
+ at MongoDB.Bson.Serialization.BsonClassMapSerializer`1.Serialize(BsonSerializationContext context, BsonSerializationArgs args, TClass value)
+ at MongoDB.Bson.BsonExtensionMethods.ToBson(Object obj, Type nominalType, BsonBinaryWriterSettings writerSettings, IBsonSerializer serializer, Action`1 configurator, BsonSerializationArgs args, Int32 estimatedBsonSize)
+ at MongoDB.Bson.BsonExtensionMethods.ToBson[TNominalType](TNominalType obj, IBsonSerializer`1 serializer, BsonBinaryWriterSettings writerSettings, Action`1 configurator, BsonSerializationArgs args, Int32 estimatedBsonSize)
+ at Fantasy.Serialize.BsonPackHelper.Serialize[T](T object)
+ at Fantasy.Serialize.BsonPackHelper.Clone[T](T t)
+ at Fantasy.DataBase.MongoDataBase.Save[T](T entity, String collection)
+ at Hotfix.GameAccountSystem.SaveToDatabase(GameAccount self, Scene scene) in D:\UnityProject\EintooAR\GameServer\Server\Hotfix\Outter\Gate\GameAccount\GameAccountSystem.cs:line 12
+ at Hotfix.GameAccountSystem.DisConnect(GameAccount self) in D:\UnityProject\EintooAR\GameServer\Server\Hotfix\Outter\Gate\GameAccount\GameAccountSystem.cs:line 30
+ at Hotfix.EntityTimeOutComponentSystem.Handler(EntityTimeOutComponent self, Int64 parentRunTimeId, Func`1 callback) in D:\UnityProject\EintooAR\GameServer\Server\Hotfix\Outter\Entity\EntityTimeOutComponentSystem.cs:line 48
+ at Fantasy.Async.FTask.InnerCoroutine()
+ at Fantasy.Async.FTask.InnerCoroutine()
+ at Hotfix.EntityTimeOutComponentSystem.<>c__DisplayClass2_0.b__0() in D:\UnityProject\EintooAR\GameServer\Server\Hotfix\Outter\Entity\EntityTimeOutComponentSystem.cs:line 35
+ at Fantasy.Timer.TimerSchedulerNet.Update()
+ at Fantasy.Entitas.EntityComponent.Update()
+ at Fantasy.Entitas.EntityComponent.Update()
+ at Fantasy.Scene.Update()
+ at Fantasy.MultiThreadScheduler.Loop(Scene scene, CancellationToken cancellationToken)
+ at Fantasy.MultiThreadScheduler.<>c__DisplayClass5_0.b__0()
+
diff --git a/GameServer/Bin/Debug/Logs/Server/Server20250402/Server..2025040217.Info.log b/GameServer/Bin/Debug/Logs/Server/Server20250402/Server..2025040217.Info.log
new file mode 100644
index 00000000..393f1984
--- /dev/null
+++ b/GameServer/Bin/Debug/Logs/Server/Server20250402/Server..2025040217.Info.log
@@ -0,0 +1,45 @@
+2025-04-02 17:01:45.0878 初始化序列化器成功,数量为:2
+2025-04-02 17:01:45.7153 SceneConfigId = 1001 networkTarget = Inner TCPServer Listen 127.0.0.1:11001
+2025-04-02 17:01:45.9191 SceneConfigId = 1001 networkTarget = Outer KCPServer Listen 127.0.0.1:21001
+2025-04-02 17:01:45.9357 (AuthenticationJWTComponentSystem.cs:44) RSA密钥导入成功
+2025-04-02 17:01:46.1523 SceneConfigId = 1002 networkTarget = Inner TCPServer Listen 127.0.0.1:11002
+2025-04-02 17:01:46.3495 SceneConfigId = 1002 networkTarget = Outer KCPServer Listen 127.0.0.1:21002
+2025-04-02 17:01:46.3516 (AuthenticationJWTComponentSystem.cs:44) RSA密钥导入成功
+2025-04-02 17:01:46.5734 SceneConfigId = 1010 networkTarget = Inner TCPServer Listen 127.0.0.1:11010
+2025-04-02 17:01:46.7610 SceneConfigId = 1010 networkTarget = Outer KCPServer Listen 127.0.0.1:21010
+2025-04-02 17:01:46.9788 SceneConfigId = 1011 networkTarget = Inner TCPServer Listen 127.0.0.1:11011
+2025-04-02 17:01:47.1682 SceneConfigId = 1011 networkTarget = Outer KCPServer Listen 127.0.0.1:21011
+2025-04-02 17:01:47.3781 SceneConfigId = 1026 networkTarget = Inner TCPServer Listen 127.0.0.1:11026
+2025-04-02 17:01:47.5875 SceneConfigId = 1026 networkTarget = Outer TCPServer Listen 127.0.0.1:21016
+2025-04-02 17:01:47.5875 Process:1 Startup Complete SceneCount:5
+2025-04-02 17:01:54.1801 (G2Chat_LoginRequestHandler.cs:19) 登录聊天服务器成功 SnowShow AccountId 116299279127281665 GateRoutedId 2589022323470237696
+2025-04-02 17:07:25.4986 初始化序列化器成功,数量为:2
+2025-04-02 17:07:26.1987 SceneConfigId = 1001 networkTarget = Inner TCPServer Listen 127.0.0.1:11001
+2025-04-02 17:07:26.4064 SceneConfigId = 1001 networkTarget = Outer KCPServer Listen 127.0.0.1:21001
+2025-04-02 17:07:26.4240 (AuthenticationJWTComponentSystem.cs:44) RSA密钥导入成功
+2025-04-02 17:07:26.6285 SceneConfigId = 1002 networkTarget = Inner TCPServer Listen 127.0.0.1:11002
+2025-04-02 17:07:26.8215 SceneConfigId = 1002 networkTarget = Outer KCPServer Listen 127.0.0.1:21002
+2025-04-02 17:07:26.8215 (AuthenticationJWTComponentSystem.cs:44) RSA密钥导入成功
+2025-04-02 17:07:27.0385 SceneConfigId = 1010 networkTarget = Inner TCPServer Listen 127.0.0.1:11010
+2025-04-02 17:07:27.2296 SceneConfigId = 1010 networkTarget = Outer KCPServer Listen 127.0.0.1:21010
+2025-04-02 17:07:27.4622 SceneConfigId = 1011 networkTarget = Inner TCPServer Listen 127.0.0.1:11011
+2025-04-02 17:07:27.6696 SceneConfigId = 1011 networkTarget = Outer KCPServer Listen 127.0.0.1:21011
+2025-04-02 17:07:27.8931 SceneConfigId = 1026 networkTarget = Inner TCPServer Listen 127.0.0.1:11026
+2025-04-02 17:07:28.1026 SceneConfigId = 1026 networkTarget = Outer TCPServer Listen 127.0.0.1:21016
+2025-04-02 17:07:28.1026 Process:1 Startup Complete SceneCount:5
+2025-04-02 17:08:10.0492 (G2Chat_LoginRequestHandler.cs:19) 登录聊天服务器成功 SnowShow AccountId 116299279127281665 GateRoutedId 2589099289284182016
+2025-04-02 17:11:49.1038 初始化序列化器成功,数量为:2
+2025-04-02 17:11:49.7598 SceneConfigId = 1001 networkTarget = Inner TCPServer Listen 127.0.0.1:11001
+2025-04-02 17:11:49.9717 SceneConfigId = 1001 networkTarget = Outer KCPServer Listen 127.0.0.1:21001
+2025-04-02 17:11:49.9873 (AuthenticationJWTComponentSystem.cs:44) RSA密钥导入成功
+2025-04-02 17:11:50.2054 SceneConfigId = 1002 networkTarget = Inner TCPServer Listen 127.0.0.1:11002
+2025-04-02 17:11:50.4176 SceneConfigId = 1002 networkTarget = Outer KCPServer Listen 127.0.0.1:21002
+2025-04-02 17:11:50.4176 (AuthenticationJWTComponentSystem.cs:44) RSA密钥导入成功
+2025-04-02 17:11:50.6331 SceneConfigId = 1010 networkTarget = Inner TCPServer Listen 127.0.0.1:11010
+2025-04-02 17:11:50.8359 SceneConfigId = 1010 networkTarget = Outer KCPServer Listen 127.0.0.1:21010
+2025-04-02 17:11:51.0480 SceneConfigId = 1011 networkTarget = Inner TCPServer Listen 127.0.0.1:11011
+2025-04-02 17:11:51.2496 SceneConfigId = 1011 networkTarget = Outer KCPServer Listen 127.0.0.1:21011
+2025-04-02 17:11:51.4815 SceneConfigId = 1026 networkTarget = Inner TCPServer Listen 127.0.0.1:11026
+2025-04-02 17:11:51.7176 SceneConfigId = 1026 networkTarget = Outer TCPServer Listen 127.0.0.1:21016
+2025-04-02 17:11:51.7176 Process:1 Startup Complete SceneCount:5
+2025-04-02 17:12:24.6011 (G2Chat_LoginRequestHandler.cs:19) 登录聊天服务器成功 SnowShow AccountId 116299279127281665 GateRoutedId 2589079498074882048
diff --git a/GameServer/Bin/Debug/Logs/Server/Server20250402/Server..2025040217.Warn.log b/GameServer/Bin/Debug/Logs/Server/Server20250402/Server..2025040217.Warn.log
new file mode 100644
index 00000000..dff68457
--- /dev/null
+++ b/GameServer/Bin/Debug/Logs/Server/Server20250402/Server..2025040217.Warn.log
@@ -0,0 +1,5 @@
+2025-04-02 17:01:54.1413 (GateJWTComponentSystem.cs:47) Gate:Token签名校验成功
+2025-04-02 17:08:10.0083 (GateJWTComponentSystem.cs:47) Gate:Token签名校验成功
+2025-04-02 17:09:04.9839 session timeout id:135640032928333824 timeNow:1743584944983 _session.LastReceiveTime:1743584933918 _timeOut:8000
+2025-04-02 17:12:24.5750 (GateJWTComponentSystem.cs:47) Gate:Token签名校验成功
+2025-04-02 17:12:44.5477 session timeout id:135644413794975744 timeNow:1743585164547 _session.LastReceiveTime:1743585152426 _timeOut:8000
diff --git a/GameServer/Bin/Debug/Logs/Server/Server20250410/Server..2025041018.Debug.log b/GameServer/Bin/Debug/Logs/Server/Server20250410/Server..2025041018.Debug.log
new file mode 100644
index 00000000..10f680b7
--- /dev/null
+++ b/GameServer/Bin/Debug/Logs/Server/Server20250410/Server..2025041018.Debug.log
@@ -0,0 +1,10 @@
+2025-04-10 18:02:13.2823 (OnCreateScene_InitEvent.cs:16) 初始化鉴权服务器组件
+2025-04-10 18:02:13.6510 (OnCreateScene_InitEvent.cs:16) 初始化鉴权服务器组件
+2025-04-10 18:02:14.1352 (OnCreateScene_InitEvent.cs:21) 初始网关(Gate)服务器组件
+2025-04-10 18:02:14.5962 (OnCreateScene_InitEvent.cs:21) 初始网关(Gate)服务器组件
+2025-04-10 18:03:13.9299 (AuthenticationComponentSystem.cs:130) Authentication: Login Success(登录成功),username:wangwei,password:123,source:客户端,Position:1001
+2025-04-10 18:03:14.6191 (C2G_LoginRequestHandler.cs:31) Gate校验登录成功用户116299279127281665
+2025-04-10 18:03:14.6570 (GameAccountManageComponentSystem.cs:102) Gate 当前缓存中的 SessionID 2589138871702781952
+2025-04-10 18:03:14.6570 (C2G_LoginRequestHandler.cs:43) Gate : Login 登录成功GameAccount:session2589138871702781952 AccountId:116299279127281665
+2025-04-10 18:03:14.7414 (G2C_GetGameAccountInfoHandler.cs:37) Gate: 获取账号信息 AccountId SnowShow
+2025-04-10 18:03:19.9373 (AuthenticationComponentSystem.cs:150) Authentication:Login:username:wangwei 用户移除成功 从缓存中
diff --git a/GameServer/Bin/Debug/Logs/Server/Server20250410/Server..2025041018.Info.log b/GameServer/Bin/Debug/Logs/Server/Server20250410/Server..2025041018.Info.log
new file mode 100644
index 00000000..e6ca2795
--- /dev/null
+++ b/GameServer/Bin/Debug/Logs/Server/Server20250410/Server..2025041018.Info.log
@@ -0,0 +1,15 @@
+2025-04-10 18:02:12.0106 初始化序列化器成功,数量为:2
+2025-04-10 18:02:12.9102 SceneConfigId = 1001 networkTarget = Inner TCPServer Listen 127.0.0.1:11001
+2025-04-10 18:02:13.1372 SceneConfigId = 1001 networkTarget = Outer KCPServer Listen 127.0.0.1:21001
+2025-04-10 18:02:13.2823 (AuthenticationJWTComponentSystem.cs:44) RSA密钥导入成功
+2025-04-10 18:02:13.4138 SceneConfigId = 1002 networkTarget = Inner TCPServer Listen 127.0.0.1:11002
+2025-04-10 18:02:13.6510 SceneConfigId = 1002 networkTarget = Outer KCPServer Listen 127.0.0.1:21002
+2025-04-10 18:02:13.6510 (AuthenticationJWTComponentSystem.cs:44) RSA密钥导入成功
+2025-04-10 18:02:13.9110 SceneConfigId = 1010 networkTarget = Inner TCPServer Listen 127.0.0.1:11010
+2025-04-10 18:02:14.1352 SceneConfigId = 1010 networkTarget = Outer KCPServer Listen 127.0.0.1:21010
+2025-04-10 18:02:14.3893 SceneConfigId = 1011 networkTarget = Inner TCPServer Listen 127.0.0.1:11011
+2025-04-10 18:02:14.5962 SceneConfigId = 1011 networkTarget = Outer KCPServer Listen 127.0.0.1:21011
+2025-04-10 18:02:14.8369 SceneConfigId = 1026 networkTarget = Inner TCPServer Listen 127.0.0.1:11026
+2025-04-10 18:02:15.0847 SceneConfigId = 1026 networkTarget = Outer TCPServer Listen 127.0.0.1:21016
+2025-04-10 18:02:15.0847 Process:1 Startup Complete SceneCount:5
+2025-04-10 18:03:14.6920 (G2Chat_LoginRequestHandler.cs:19) 登录聊天服务器成功 SnowShow AccountId 116299279127281665 GateRoutedId 2589138871702781952
diff --git a/GameServer/Bin/Debug/Logs/Server/Server20250410/Server..2025041018.Warn.log b/GameServer/Bin/Debug/Logs/Server/Server20250410/Server..2025041018.Warn.log
new file mode 100644
index 00000000..838eabf1
--- /dev/null
+++ b/GameServer/Bin/Debug/Logs/Server/Server20250410/Server..2025041018.Warn.log
@@ -0,0 +1,7 @@
+2025-04-10 18:03:14.6191 (GateJWTComponentSystem.cs:47) Gate:Token签名校验成功
+2025-04-10 18:03:19.3288 Scene:738459648 Found Unhandled RouteMessage: Fantasy.C2Chat_BoardMessageRequest
+2025-04-10 18:03:33.2455 Scene:738459648 Found Unhandled RouteMessage: Fantasy.C2Chat_BoardMessageRequest
+2025-04-10 18:03:34.3330 Scene:738459648 Found Unhandled RouteMessage: Fantasy.C2Chat_BoardMessageRequest
+2025-04-10 18:03:35.5108 Scene:738459648 Found Unhandled RouteMessage: Fantasy.C2Chat_BoardMessageRequest
+2025-04-10 18:03:35.6998 Scene:738459648 Found Unhandled RouteMessage: Fantasy.C2Chat_BoardMessageRequest
+2025-04-10 18:03:35.9334 Scene:738459648 Found Unhandled RouteMessage: Fantasy.C2Chat_BoardMessageRequest
diff --git a/GameServer/Bin/Debug/Logs/Server/Server20250411/Server..2025041115.Debug.log b/GameServer/Bin/Debug/Logs/Server/Server20250411/Server..2025041115.Debug.log
new file mode 100644
index 00000000..65a05a6c
--- /dev/null
+++ b/GameServer/Bin/Debug/Logs/Server/Server20250411/Server..2025041115.Debug.log
@@ -0,0 +1,106 @@
+2025-04-11 15:33:27.7754 (OnCreateScene_InitEvent.cs:16) 初始化鉴权服务器组件
+2025-04-11 15:33:28.3052 (OnCreateScene_InitEvent.cs:16) 初始化鉴权服务器组件
+2025-04-11 15:33:28.8746 (OnCreateScene_InitEvent.cs:21) 初始网关(Gate)服务器组件
+2025-04-11 15:33:29.4622 (OnCreateScene_InitEvent.cs:21) 初始网关(Gate)服务器组件
+2025-04-11 15:33:50.2754 (AuthenticationComponentSystem.cs:130) Authentication: Login Success(登录成功),username:wangwei,password:123,source:客户端,Position:1001
+2025-04-11 15:33:50.8787 (C2G_LoginRequestHandler.cs:31) Gate校验登录成功用户116299279127281665
+2025-04-11 15:33:50.8978 (GameAccountManageComponentSystem.cs:102) Gate 当前缓存中的 SessionID 2589053109795815424
+2025-04-11 15:33:50.8991 (C2G_LoginRequestHandler.cs:43) Gate : Login 登录成功GameAccount:session2589053109795815424 AccountId:116299279127281665
+2025-04-11 15:33:50.9430 (G2C_GetGameAccountInfoHandler.cs:37) Gate: 获取账号信息 AccountId SnowShow
+2025-04-11 15:33:56.2772 (AuthenticationComponentSystem.cs:150) Authentication:Login:username:wangwei 用户移除成功 从缓存中
+2025-04-11 15:34:40.8522 (GameAccountSystem.cs:29) Gate gameAccount 下线前 保存数据到 数据库中
+2025-04-11 15:35:15.5785 (OnCreateScene_InitEvent.cs:16) 初始化鉴权服务器组件
+2025-04-11 15:35:15.9484 (OnCreateScene_InitEvent.cs:16) 初始化鉴权服务器组件
+2025-04-11 15:35:16.3260 (OnCreateScene_InitEvent.cs:21) 初始网关(Gate)服务器组件
+2025-04-11 15:35:16.7161 (OnCreateScene_InitEvent.cs:21) 初始网关(Gate)服务器组件
+2025-04-11 15:36:05.9189 (AuthenticationComponentSystem.cs:130) Authentication: Login Success(登录成功),username:wangwei,password:123,source:客户端,Position:1001
+2025-04-11 15:36:06.2176 (C2G_LoginRequestHandler.cs:31) Gate校验登录成功用户116299279127281665
+2025-04-11 15:36:06.2564 (GameAccountManageComponentSystem.cs:102) Gate 当前缓存中的 SessionID 2589114682446970880
+2025-04-11 15:36:06.2581 (C2G_LoginRequestHandler.cs:43) Gate : Login 登录成功GameAccount:session2589114682446970880 AccountId:116299279127281665
+2025-04-11 15:36:06.3355 (G2C_GetGameAccountInfoHandler.cs:37) Gate: 获取账号信息 AccountId SnowShow
+2025-04-11 15:36:11.9240 (AuthenticationComponentSystem.cs:150) Authentication:Login:username:wangwei 用户移除成功 从缓存中
+2025-04-11 15:36:26.1967 (GameAccountSystem.cs:29) Gate gameAccount 下线前 保存数据到 数据库中
+2025-04-11 15:36:26.2659 (G2Chat_OfflineRequestHandler.cs:11) chat : 聊天服务器SnowShow 下线
+2025-04-11 15:36:26.2659 (GateLoginHelper.cs:44) Gate : chat聊天服务器下线成功
+2025-04-11 15:36:26.2659 (GameAccountSystem.cs:29) Gate gameAccount 下线前 保存数据到 数据库中
+2025-04-11 15:36:26.2659 (EntityTimeOutComponentSystem.cs:52) session : 0 Dispose
+2025-04-11 15:37:54.5531 (AuthenticationComponentSystem.cs:130) Authentication: Login Success(登录成功),username:wangwei,password:123,source:客户端,Position:1001
+2025-04-11 15:37:54.7182 (C2G_LoginRequestHandler.cs:31) Gate校验登录成功用户116299279127281665
+2025-04-11 15:37:54.7264 (GameAccountManageComponentSystem.cs:102) Gate 当前缓存中的 SessionID 2589354375981826048
+2025-04-11 15:37:54.7264 (C2G_LoginRequestHandler.cs:43) Gate : Login 登录成功GameAccount:session2589354375981826048 AccountId:116299279127281665
+2025-04-11 15:37:54.7724 (G2C_GetGameAccountInfoHandler.cs:37) Gate: 获取账号信息 AccountId SnowShow
+2025-04-11 15:38:00.5543 (AuthenticationComponentSystem.cs:150) Authentication:Login:username:wangwei 用户移除成功 从缓存中
+2025-04-11 15:39:33.1843 (OnCreateScene_InitEvent.cs:16) 初始化鉴权服务器组件
+2025-04-11 15:39:33.5875 (OnCreateScene_InitEvent.cs:16) 初始化鉴权服务器组件
+2025-04-11 15:39:33.9826 (OnCreateScene_InitEvent.cs:21) 初始网关(Gate)服务器组件
+2025-04-11 15:39:34.3674 (OnCreateScene_InitEvent.cs:21) 初始网关(Gate)服务器组件
+2025-04-11 15:40:09.8010 (AuthenticationComponentSystem.cs:130) Authentication: Login Success(登录成功),username:wangwei,password:123,source:客户端,Position:1001
+2025-04-11 15:40:10.0575 (C2G_LoginRequestHandler.cs:31) Gate校验登录成功用户116299279127281665
+2025-04-11 15:40:10.0885 (GameAccountManageComponentSystem.cs:102) Gate 当前缓存中的 SessionID 2589086095144648704
+2025-04-11 15:40:10.0885 (C2G_LoginRequestHandler.cs:43) Gate : Login 登录成功GameAccount:session2589086095144648704 AccountId:116299279127281665
+2025-04-11 15:40:10.1505 (G2C_GetGameAccountInfoHandler.cs:37) Gate: 获取账号信息 AccountId SnowShow
+2025-04-11 15:40:13.1258 (C2Chat_BoardRequestMessageHandler.cs:12) Love
+2025-04-11 15:40:15.8053 (AuthenticationComponentSystem.cs:150) Authentication:Login:username:wangwei 用户移除成功 从缓存中
+2025-04-11 15:41:41.4501 (OnCreateScene_InitEvent.cs:16) 初始化鉴权服务器组件
+2025-04-11 15:41:41.8365 (OnCreateScene_InitEvent.cs:16) 初始化鉴权服务器组件
+2025-04-11 15:41:42.2302 (OnCreateScene_InitEvent.cs:21) 初始网关(Gate)服务器组件
+2025-04-11 15:41:42.6253 (OnCreateScene_InitEvent.cs:21) 初始网关(Gate)服务器组件
+2025-04-11 15:41:49.7037 (AuthenticationComponentSystem.cs:130) Authentication: Login Success(登录成功),username:wangwei,password:123,source:客户端,Position:1001
+2025-04-11 15:41:49.9609 (C2G_LoginRequestHandler.cs:31) Gate校验登录成功用户116299279127281665
+2025-04-11 15:41:49.9914 (GameAccountManageComponentSystem.cs:102) Gate 当前缓存中的 SessionID 2589022323470237696
+2025-04-11 15:41:49.9914 (C2G_LoginRequestHandler.cs:43) Gate : Login 登录成功GameAccount:session2589022323470237696 AccountId:116299279127281665
+2025-04-11 15:41:50.0552 (G2C_GetGameAccountInfoHandler.cs:37) Gate: 获取账号信息 AccountId SnowShow
+2025-04-11 15:41:53.7608 (C2Chat_BoardRequestMessageHandler.cs:12) Love
+2025-04-11 15:41:53.7608 (ChatHelper.cs:21) 85932900352
+2025-04-11 15:41:53.7608 (ChatHelper.cs:21) 94522834944
+2025-04-11 15:41:55.7135 (AuthenticationComponentSystem.cs:150) Authentication:Login:username:wangwei 用户移除成功 从缓存中
+2025-04-11 15:45:17.4931 (OnCreateScene_InitEvent.cs:16) 初始化鉴权服务器组件
+2025-04-11 15:45:17.8754 (OnCreateScene_InitEvent.cs:16) 初始化鉴权服务器组件
+2025-04-11 15:45:18.2764 (OnCreateScene_InitEvent.cs:21) 初始网关(Gate)服务器组件
+2025-04-11 15:45:18.6637 (OnCreateScene_InitEvent.cs:21) 初始网关(Gate)服务器组件
+2025-04-11 15:46:29.4587 (AuthenticationComponentSystem.cs:130) Authentication: Login Success(登录成功),username:wangwei,password:123,source:客户端,Position:1001
+2025-04-11 15:46:29.7089 (C2G_LoginRequestHandler.cs:31) Gate校验登录成功用户116299279127281665
+2025-04-11 15:46:29.7327 (GameAccountManageComponentSystem.cs:102) Gate 当前缓存中的 SessionID 2589163060958593024
+2025-04-11 15:46:29.7327 (C2G_LoginRequestHandler.cs:43) Gate : Login 登录成功GameAccount:session2589163060958593024 AccountId:116299279127281665
+2025-04-11 15:46:29.7742 (G2C_GetGameAccountInfoHandler.cs:37) Gate: 获取账号信息 AccountId SnowShow
+2025-04-11 15:46:33.0385 (C2Chat_BoardRequestMessageHandler.cs:12) Love
+2025-04-11 15:46:33.0385 (ChatHelper.cs:21) 85932900352
+2025-04-11 15:46:33.0385 (Chat2G_BoardMessageHandler.cs:19) GateLove
+2025-04-11 15:46:35.4618 (AuthenticationComponentSystem.cs:150) Authentication:Login:username:wangwei 用户移除成功 从缓存中
+2025-04-11 15:49:20.7250 (OnCreateScene_InitEvent.cs:16) 初始化鉴权服务器组件
+2025-04-11 15:49:21.1064 (OnCreateScene_InitEvent.cs:16) 初始化鉴权服务器组件
+2025-04-11 15:49:21.5042 (OnCreateScene_InitEvent.cs:21) 初始网关(Gate)服务器组件
+2025-04-11 15:49:21.8951 (OnCreateScene_InitEvent.cs:21) 初始网关(Gate)服务器组件
+2025-04-11 15:49:56.2043 (AuthenticationComponentSystem.cs:130) Authentication: Login Success(登录成功),username:wangwei,password:123,source:客户端,Position:1001
+2025-04-11 15:49:56.4790 (C2G_LoginRequestHandler.cs:31) Gate校验登录成功用户116299279127281665
+2025-04-11 15:49:56.5206 (GameAccountManageComponentSystem.cs:102) Gate 当前缓存中的 SessionID 2589081697098137600
+2025-04-11 15:49:56.5206 (C2G_LoginRequestHandler.cs:43) Gate : Login 登录成功GameAccount:session2589081697098137600 AccountId:116299279127281665
+2025-04-11 15:49:56.5844 (G2C_GetGameAccountInfoHandler.cs:37) Gate: 获取账号信息 AccountId SnowShow
+2025-04-11 15:49:59.1360 (C2Chat_BoardRequestMessageHandler.cs:12) Love
+2025-04-11 15:49:59.1360 (ChatHelper.cs:21) 85932900352
+2025-04-11 15:49:59.1528 (Chat2G_BoardMessageHandler.cs:19) Love
+2025-04-11 15:50:02.2075 (AuthenticationComponentSystem.cs:150) Authentication:Login:username:wangwei 用户移除成功 从缓存中
+2025-04-11 15:53:23.1796 (OnCreateScene_InitEvent.cs:16) 初始化鉴权服务器组件
+2025-04-11 15:53:23.6034 (OnCreateScene_InitEvent.cs:16) 初始化鉴权服务器组件
+2025-04-11 15:53:24.0237 (OnCreateScene_InitEvent.cs:21) 初始网关(Gate)服务器组件
+2025-04-11 15:53:24.4187 (OnCreateScene_InitEvent.cs:21) 初始网关(Gate)服务器组件
+2025-04-11 15:53:35.0454 (AuthenticationComponentSystem.cs:130) Authentication: Login Success(登录成功),username:wangwei,password:123,source:客户端,Position:1001
+2025-04-11 15:53:35.3006 (C2G_LoginRequestHandler.cs:31) Gate校验登录成功用户116299279127281665
+2025-04-11 15:53:35.3419 (GameAccountManageComponentSystem.cs:102) Gate 当前缓存中的 SessionID 2589031119563259904
+2025-04-11 15:53:35.3419 (C2G_LoginRequestHandler.cs:43) Gate : Login 登录成功GameAccount:session2589031119563259904 AccountId:116299279127281665
+2025-04-11 15:53:35.4077 (G2C_GetGameAccountInfoHandler.cs:37) Gate: 获取账号信息 AccountId SnowShow
+2025-04-11 15:53:38.0390 (C2Chat_BoardRequestMessageHandler.cs:12) Love
+2025-04-11 15:53:38.0390 (ChatHelper.cs:21) 85932900352
+2025-04-11 15:53:38.0547 (Chat2G_BoardMessageHandler.cs:19) 0
+2025-04-11 15:53:41.0609 (AuthenticationComponentSystem.cs:150) Authentication:Login:username:wangwei 用户移除成功 从缓存中
+2025-04-11 15:59:02.1323 (OnCreateScene_InitEvent.cs:16) 初始化鉴权服务器组件
+2025-04-11 15:59:02.4884 (OnCreateScene_InitEvent.cs:16) 初始化鉴权服务器组件
+2025-04-11 15:59:02.8598 (OnCreateScene_InitEvent.cs:21) 初始网关(Gate)服务器组件
+2025-04-11 15:59:03.2376 (OnCreateScene_InitEvent.cs:21) 初始网关(Gate)服务器组件
+2025-04-11 15:59:40.2166 (AuthenticationComponentSystem.cs:130) Authentication: Login Success(登录成功),username:wangwei,password:123,source:客户端,Position:1001
+2025-04-11 15:59:40.4833 (C2G_LoginRequestHandler.cs:31) Gate校验登录成功用户116299279127281665
+2025-04-11 15:59:40.5250 (GameAccountManageComponentSystem.cs:102) Gate 当前缓存中的 SessionID 2589088294167904256
+2025-04-11 15:59:40.5250 (C2G_LoginRequestHandler.cs:43) Gate : Login 登录成功GameAccount:session2589088294167904256 AccountId:116299279127281665
+2025-04-11 15:59:40.5628 (GateLoginHelper.cs:32) OLine Gate1
+2025-04-11 15:59:40.5892 (G2C_GetGameAccountInfoHandler.cs:37) Gate: 获取账号信息 AccountId SnowShow
+2025-04-11 15:59:46.2307 (AuthenticationComponentSystem.cs:150) Authentication:Login:username:wangwei 用户移除成功 从缓存中
diff --git a/GameServer/Bin/Debug/Logs/Server/Server20250411/Server..2025041115.Error.log b/GameServer/Bin/Debug/Logs/Server/Server20250411/Server..2025041115.Error.log
new file mode 100644
index 00000000..ff8e00cd
--- /dev/null
+++ b/GameServer/Bin/Debug/Logs/Server/Server20250411/Server..2025041115.Error.log
@@ -0,0 +1,762 @@
+2025-04-11 15:34:28.2433 coroutine lock timeout CoroutineLockQueueType:140718960075648 Key:2589053238644834304 Tag:
+ at Fantasy.Async.OnCoroutineLockTimeout.Handler(CoroutineLockTimeout self)
+ at Fantasy.Event.EventSystem`1.Invoke(Object self)
+ at Fantasy.Event.EventComponent.Publish[TEventData](TEventData eventData)
+ at Fantasy.Timer.TimerSchedulerNet.<>c__DisplayClass18_0`1.g__OnceTimerVoid|0()
+ at Fantasy.Timer.TimerSchedulerNet.Update()
+ at Fantasy.Entitas.EntityComponent.Update()
+ at Fantasy.Scene.Update()
+ at Fantasy.MultiThreadScheduler.Loop(Scene scene, CancellationToken cancellationToken)
+ at Fantasy.MultiThreadScheduler.<>c__DisplayClass5_0.b__0()
+
+2025-04-11 15:34:30.6502 coroutine lock timeout CoroutineLockQueueType:140718960075648 Key:2589053238644834304 Tag:
+ at Fantasy.Async.OnCoroutineLockTimeout.Handler(CoroutineLockTimeout self)
+ at Fantasy.Event.EventSystem`1.Invoke(Object self)
+ at Fantasy.Event.EventComponent.Publish[TEventData](TEventData eventData)
+ at Fantasy.Timer.TimerSchedulerNet.<>c__DisplayClass18_0`1.g__OnceTimerVoid|0()
+ at Fantasy.Timer.TimerSchedulerNet.Update()
+ at Fantasy.Entitas.EntityComponent.Update()
+ at Fantasy.Scene.Update()
+ at Fantasy.MultiThreadScheduler.Loop(Scene scene, CancellationToken cancellationToken)
+ at Fantasy.MultiThreadScheduler.<>c__DisplayClass5_0.b__0()
+
+2025-04-11 15:34:31.3106 coroutine lock timeout CoroutineLockQueueType:140718960075648 Key:2589053238644834304 Tag:
+ at Fantasy.Async.OnCoroutineLockTimeout.Handler(CoroutineLockTimeout self)
+ at Fantasy.Event.EventSystem`1.Invoke(Object self)
+ at Fantasy.Event.EventComponent.Publish[TEventData](TEventData eventData)
+ at Fantasy.Timer.TimerSchedulerNet.<>c__DisplayClass18_0`1.g__OnceTimerVoid|0()
+ at Fantasy.Timer.TimerSchedulerNet.Update()
+ at Fantasy.Entitas.EntityComponent.Update()
+ at Fantasy.Scene.Update()
+ at Fantasy.MultiThreadScheduler.Loop(Scene scene, CancellationToken cancellationToken)
+ at Fantasy.MultiThreadScheduler.<>c__DisplayClass5_0.b__0()
+
+2025-04-11 15:34:31.5817 coroutine lock timeout CoroutineLockQueueType:140718960075648 Key:2589053238644834304 Tag:
+ at Fantasy.Async.OnCoroutineLockTimeout.Handler(CoroutineLockTimeout self)
+ at Fantasy.Event.EventSystem`1.Invoke(Object self)
+ at Fantasy.Event.EventComponent.Publish[TEventData](TEventData eventData)
+ at Fantasy.Timer.TimerSchedulerNet.<>c__DisplayClass18_0`1.g__OnceTimerVoid|0()
+ at Fantasy.Timer.TimerSchedulerNet.Update()
+ at Fantasy.Entitas.EntityComponent.Update()
+ at Fantasy.Scene.Update()
+ at Fantasy.MultiThreadScheduler.Loop(Scene scene, CancellationToken cancellationToken)
+ at Fantasy.MultiThreadScheduler.<>c__DisplayClass5_0.b__0()
+
+2025-04-11 15:34:31.7644 coroutine lock timeout CoroutineLockQueueType:140718960075648 Key:2589053238644834304 Tag:
+ at Fantasy.Async.OnCoroutineLockTimeout.Handler(CoroutineLockTimeout self)
+ at Fantasy.Event.EventSystem`1.Invoke(Object self)
+ at Fantasy.Event.EventComponent.Publish[TEventData](TEventData eventData)
+ at Fantasy.Timer.TimerSchedulerNet.<>c__DisplayClass18_0`1.g__OnceTimerVoid|0()
+ at Fantasy.Timer.TimerSchedulerNet.Update()
+ at Fantasy.Entitas.EntityComponent.Update()
+ at Fantasy.Scene.Update()
+ at Fantasy.MultiThreadScheduler.Loop(Scene scene, CancellationToken cancellationToken)
+ at Fantasy.MultiThreadScheduler.<>c__DisplayClass5_0.b__0()
+
+2025-04-11 15:34:31.9531 coroutine lock timeout CoroutineLockQueueType:140718960075648 Key:2589053238644834304 Tag:
+ at Fantasy.Async.OnCoroutineLockTimeout.Handler(CoroutineLockTimeout self)
+ at Fantasy.Event.EventSystem`1.Invoke(Object self)
+ at Fantasy.Event.EventComponent.Publish[TEventData](TEventData eventData)
+ at Fantasy.Timer.TimerSchedulerNet.<>c__DisplayClass18_0`1.g__OnceTimerVoid|0()
+ at Fantasy.Timer.TimerSchedulerNet.Update()
+ at Fantasy.Entitas.EntityComponent.Update()
+ at Fantasy.Scene.Update()
+ at Fantasy.MultiThreadScheduler.Loop(Scene scene, CancellationToken cancellationToken)
+ at Fantasy.MultiThreadScheduler.<>c__DisplayClass5_0.b__0()
+
+2025-04-11 15:34:32.1336 coroutine lock timeout CoroutineLockQueueType:140718960075648 Key:2589053238644834304 Tag:
+ at Fantasy.Async.OnCoroutineLockTimeout.Handler(CoroutineLockTimeout self)
+ at Fantasy.Event.EventSystem`1.Invoke(Object self)
+ at Fantasy.Event.EventComponent.Publish[TEventData](TEventData eventData)
+ at Fantasy.Timer.TimerSchedulerNet.<>c__DisplayClass18_0`1.g__OnceTimerVoid|0()
+ at Fantasy.Timer.TimerSchedulerNet.Update()
+ at Fantasy.Entitas.EntityComponent.Update()
+ at Fantasy.Scene.Update()
+ at Fantasy.MultiThreadScheduler.Loop(Scene scene, CancellationToken cancellationToken)
+ at Fantasy.MultiThreadScheduler.<>c__DisplayClass5_0.b__0()
+
+2025-04-11 15:34:38.6398 coroutine lock timeout CoroutineLockQueueType:140718960075648 Key:2589053238644834304 Tag:
+ at Fantasy.Async.OnCoroutineLockTimeout.Handler(CoroutineLockTimeout self)
+ at Fantasy.Event.EventSystem`1.Invoke(Object self)
+ at Fantasy.Event.EventComponent.Publish[TEventData](TEventData eventData)
+ at Fantasy.Timer.TimerSchedulerNet.<>c__DisplayClass18_0`1.g__OnceTimerVoid|0()
+ at Fantasy.Timer.TimerSchedulerNet.Update()
+ at Fantasy.Entitas.EntityComponent.Update()
+ at Fantasy.Scene.Update()
+ at Fantasy.MultiThreadScheduler.Loop(Scene scene, CancellationToken cancellationToken)
+ at Fantasy.MultiThreadScheduler.<>c__DisplayClass5_0.b__0()
+
+2025-04-11 15:34:38.8670 coroutine lock timeout CoroutineLockQueueType:140718960075648 Key:2589053238644834304 Tag:
+ at Fantasy.Async.OnCoroutineLockTimeout.Handler(CoroutineLockTimeout self)
+ at Fantasy.Event.EventSystem`1.Invoke(Object self)
+ at Fantasy.Event.EventComponent.Publish[TEventData](TEventData eventData)
+ at Fantasy.Timer.TimerSchedulerNet.<>c__DisplayClass18_0`1.g__OnceTimerVoid|0()
+ at Fantasy.Timer.TimerSchedulerNet.Update()
+ at Fantasy.Entitas.EntityComponent.Update()
+ at Fantasy.Scene.Update()
+ at Fantasy.MultiThreadScheduler.Loop(Scene scene, CancellationToken cancellationToken)
+ at Fantasy.MultiThreadScheduler.<>c__DisplayClass5_0.b__0()
+
+2025-04-11 15:34:38.8670 Unsupported protocol type:Fantasy.C2Chat_BoardMessageRequest rpcId:2
+ at Fantasy.Scheduler.NetworkMessagingComponent.ReturnMessageSender(UInt32 rpcId, MessageSender messageSender)
+ at Fantasy.Scheduler.OnNetworkMessageUpdateCheckTimeout.Handler(NetworkMessageUpdate self)
+ at Fantasy.Event.EventSystem`1.Invoke(Object self)
+ at Fantasy.Event.EventComponent.Publish[TEventData](TEventData eventData)
+ at Fantasy.Timer.TimerSchedulerNet.<>c__DisplayClass22_0`1.g__RepeatedTimerVoid|0()
+ at Fantasy.Timer.TimerSchedulerNet.Update()
+ at Fantasy.Entitas.EntityComponent.Update()
+ at Fantasy.Scene.Update()
+ at Fantasy.MultiThreadScheduler.Loop(Scene scene, CancellationToken cancellationToken)
+ at Fantasy.MultiThreadScheduler.<>c__DisplayClass5_0.b__0()
+
+2025-04-11 15:34:39.0708 coroutine lock timeout CoroutineLockQueueType:140718960075648 Key:2589053238644834304 Tag:
+ at Fantasy.Async.OnCoroutineLockTimeout.Handler(CoroutineLockTimeout self)
+ at Fantasy.Event.EventSystem`1.Invoke(Object self)
+ at Fantasy.Event.EventComponent.Publish[TEventData](TEventData eventData)
+ at Fantasy.Timer.TimerSchedulerNet.<>c__DisplayClass18_0`1.g__OnceTimerVoid|0()
+ at Fantasy.Timer.TimerSchedulerNet.Update()
+ at Fantasy.Entitas.EntityComponent.Update()
+ at Fantasy.Scene.Update()
+ at Fantasy.MultiThreadScheduler.Loop(Scene scene, CancellationToken cancellationToken)
+ at Fantasy.MultiThreadScheduler.<>c__DisplayClass5_0.b__0()
+
+2025-04-11 15:34:39.2857 coroutine lock timeout CoroutineLockQueueType:140718960075648 Key:2589053238644834304 Tag:
+ at Fantasy.Async.OnCoroutineLockTimeout.Handler(CoroutineLockTimeout self)
+ at Fantasy.Event.EventSystem`1.Invoke(Object self)
+ at Fantasy.Event.EventComponent.Publish[TEventData](TEventData eventData)
+ at Fantasy.Timer.TimerSchedulerNet.<>c__DisplayClass18_0`1.g__OnceTimerVoid|0()
+ at Fantasy.Timer.TimerSchedulerNet.Update()
+ at Fantasy.Entitas.EntityComponent.Update()
+ at Fantasy.Scene.Update()
+ at Fantasy.MultiThreadScheduler.Loop(Scene scene, CancellationToken cancellationToken)
+ at Fantasy.MultiThreadScheduler.<>c__DisplayClass5_0.b__0()
+
+2025-04-11 15:34:39.9822 coroutine lock timeout CoroutineLockQueueType:140718960075648 Key:2589053238644834304 Tag:
+ at Fantasy.Async.OnCoroutineLockTimeout.Handler(CoroutineLockTimeout self)
+ at Fantasy.Event.EventSystem`1.Invoke(Object self)
+ at Fantasy.Event.EventComponent.Publish[TEventData](TEventData eventData)
+ at Fantasy.Timer.TimerSchedulerNet.<>c__DisplayClass18_0`1.g__OnceTimerVoid|0()
+ at Fantasy.Timer.TimerSchedulerNet.Update()
+ at Fantasy.Entitas.EntityComponent.Update()
+ at Fantasy.Scene.Update()
+ at Fantasy.MultiThreadScheduler.Loop(Scene scene, CancellationToken cancellationToken)
+ at Fantasy.MultiThreadScheduler.<>c__DisplayClass5_0.b__0()
+
+2025-04-11 15:34:40.5772 coroutine lock timeout CoroutineLockQueueType:140718960075648 Key:2589053238644834304 Tag:
+ at Fantasy.Async.OnCoroutineLockTimeout.Handler(CoroutineLockTimeout self)
+ at Fantasy.Event.EventSystem`1.Invoke(Object self)
+ at Fantasy.Event.EventComponent.Publish[TEventData](TEventData eventData)
+ at Fantasy.Timer.TimerSchedulerNet.<>c__DisplayClass18_0`1.g__OnceTimerVoid|0()
+ at Fantasy.Timer.TimerSchedulerNet.Update()
+ at Fantasy.Entitas.EntityComponent.Update()
+ at Fantasy.Scene.Update()
+ at Fantasy.MultiThreadScheduler.Loop(Scene scene, CancellationToken cancellationToken)
+ at Fantasy.MultiThreadScheduler.<>c__DisplayClass5_0.b__0()
+
+2025-04-11 15:34:41.1027 coroutine lock timeout CoroutineLockQueueType:140718960075648 Key:2589053238644834304 Tag:
+ at Fantasy.Async.OnCoroutineLockTimeout.Handler(CoroutineLockTimeout self)
+ at Fantasy.Event.EventSystem`1.Invoke(Object self)
+ at Fantasy.Event.EventComponent.Publish[TEventData](TEventData eventData)
+ at Fantasy.Timer.TimerSchedulerNet.<>c__DisplayClass18_0`1.g__OnceTimerVoid|0()
+ at Fantasy.Timer.TimerSchedulerNet.Update()
+ at Fantasy.Entitas.EntityComponent.Update()
+ at Fantasy.Scene.Update()
+ at Fantasy.MultiThreadScheduler.Loop(Scene scene, CancellationToken cancellationToken)
+ at Fantasy.MultiThreadScheduler.<>c__DisplayClass5_0.b__0()
+
+2025-04-11 15:34:41.6802 coroutine lock timeout CoroutineLockQueueType:140718960075648 Key:2589053238644834304 Tag:
+ at Fantasy.Async.OnCoroutineLockTimeout.Handler(CoroutineLockTimeout self)
+ at Fantasy.Event.EventSystem`1.Invoke(Object self)
+ at Fantasy.Event.EventComponent.Publish[TEventData](TEventData eventData)
+ at Fantasy.Timer.TimerSchedulerNet.<>c__DisplayClass18_0`1.g__OnceTimerVoid|0()
+ at Fantasy.Timer.TimerSchedulerNet.Update()
+ at Fantasy.Entitas.EntityComponent.Update()
+ at Fantasy.Scene.Update()
+ at Fantasy.MultiThreadScheduler.Loop(Scene scene, CancellationToken cancellationToken)
+ at Fantasy.MultiThreadScheduler.<>c__DisplayClass5_0.b__0()
+
+2025-04-11 15:34:42.1975 coroutine lock timeout CoroutineLockQueueType:140718960075648 Key:2589053238644834304 Tag:
+ at Fantasy.Async.OnCoroutineLockTimeout.Handler(CoroutineLockTimeout self)
+ at Fantasy.Event.EventSystem`1.Invoke(Object self)
+ at Fantasy.Event.EventComponent.Publish[TEventData](TEventData eventData)
+ at Fantasy.Timer.TimerSchedulerNet.<>c__DisplayClass18_0`1.g__OnceTimerVoid|0()
+ at Fantasy.Timer.TimerSchedulerNet.Update()
+ at Fantasy.Entitas.EntityComponent.Update()
+ at Fantasy.Scene.Update()
+ at Fantasy.MultiThreadScheduler.Loop(Scene scene, CancellationToken cancellationToken)
+ at Fantasy.MultiThreadScheduler.<>c__DisplayClass5_0.b__0()
+
+2025-04-11 15:34:42.7772 coroutine lock timeout CoroutineLockQueueType:140718960075648 Key:2589053238644834304 Tag:
+ at Fantasy.Async.OnCoroutineLockTimeout.Handler(CoroutineLockTimeout self)
+ at Fantasy.Event.EventSystem`1.Invoke(Object self)
+ at Fantasy.Event.EventComponent.Publish[TEventData](TEventData eventData)
+ at Fantasy.Timer.TimerSchedulerNet.<>c__DisplayClass18_0`1.g__OnceTimerVoid|0()
+ at Fantasy.Timer.TimerSchedulerNet.Update()
+ at Fantasy.Entitas.EntityComponent.Update()
+ at Fantasy.Scene.Update()
+ at Fantasy.MultiThreadScheduler.Loop(Scene scene, CancellationToken cancellationToken)
+ at Fantasy.MultiThreadScheduler.<>c__DisplayClass5_0.b__0()
+
+2025-04-11 15:34:43.2472 coroutine lock timeout CoroutineLockQueueType:140718960075648 Key:2589053238644834304 Tag:
+ at Fantasy.Async.OnCoroutineLockTimeout.Handler(CoroutineLockTimeout self)
+ at Fantasy.Event.EventSystem`1.Invoke(Object self)
+ at Fantasy.Event.EventComponent.Publish[TEventData](TEventData eventData)
+ at Fantasy.Timer.TimerSchedulerNet.<>c__DisplayClass18_0`1.g__OnceTimerVoid|0()
+ at Fantasy.Timer.TimerSchedulerNet.Update()
+ at Fantasy.Entitas.EntityComponent.Update()
+ at Fantasy.Scene.Update()
+ at Fantasy.MultiThreadScheduler.Loop(Scene scene, CancellationToken cancellationToken)
+ at Fantasy.MultiThreadScheduler.<>c__DisplayClass5_0.b__0()
+
+2025-04-11 15:34:43.7720 coroutine lock timeout CoroutineLockQueueType:140718960075648 Key:2589053238644834304 Tag:
+ at Fantasy.Async.OnCoroutineLockTimeout.Handler(CoroutineLockTimeout self)
+ at Fantasy.Event.EventSystem`1.Invoke(Object self)
+ at Fantasy.Event.EventComponent.Publish[TEventData](TEventData eventData)
+ at Fantasy.Timer.TimerSchedulerNet.<>c__DisplayClass18_0`1.g__OnceTimerVoid|0()
+ at Fantasy.Timer.TimerSchedulerNet.Update()
+ at Fantasy.Entitas.EntityComponent.Update()
+ at Fantasy.Scene.Update()
+ at Fantasy.MultiThreadScheduler.Loop(Scene scene, CancellationToken cancellationToken)
+ at Fantasy.MultiThreadScheduler.<>c__DisplayClass5_0.b__0()
+
+2025-04-11 15:34:44.1722 coroutine lock timeout CoroutineLockQueueType:140718960075648 Key:2589053238644834304 Tag:
+ at Fantasy.Async.OnCoroutineLockTimeout.Handler(CoroutineLockTimeout self)
+ at Fantasy.Event.EventSystem`1.Invoke(Object self)
+ at Fantasy.Event.EventComponent.Publish[TEventData](TEventData eventData)
+ at Fantasy.Timer.TimerSchedulerNet.<>c__DisplayClass18_0`1.g__OnceTimerVoid|0()
+ at Fantasy.Timer.TimerSchedulerNet.Update()
+ at Fantasy.Entitas.EntityComponent.Update()
+ at Fantasy.Scene.Update()
+ at Fantasy.MultiThreadScheduler.Loop(Scene scene, CancellationToken cancellationToken)
+ at Fantasy.MultiThreadScheduler.<>c__DisplayClass5_0.b__0()
+
+2025-04-11 15:34:44.3467 coroutine lock timeout CoroutineLockQueueType:140718960075648 Key:2589053238644834304 Tag:
+ at Fantasy.Async.OnCoroutineLockTimeout.Handler(CoroutineLockTimeout self)
+ at Fantasy.Event.EventSystem`1.Invoke(Object self)
+ at Fantasy.Event.EventComponent.Publish[TEventData](TEventData eventData)
+ at Fantasy.Timer.TimerSchedulerNet.<>c__DisplayClass18_0`1.g__OnceTimerVoid|0()
+ at Fantasy.Timer.TimerSchedulerNet.Update()
+ at Fantasy.Entitas.EntityComponent.Update()
+ at Fantasy.Scene.Update()
+ at Fantasy.MultiThreadScheduler.Loop(Scene scene, CancellationToken cancellationToken)
+ at Fantasy.MultiThreadScheduler.<>c__DisplayClass5_0.b__0()
+
+2025-04-11 15:34:44.5410 coroutine lock timeout CoroutineLockQueueType:140718960075648 Key:2589053238644834304 Tag:
+ at Fantasy.Async.OnCoroutineLockTimeout.Handler(CoroutineLockTimeout self)
+ at Fantasy.Event.EventSystem`1.Invoke(Object self)
+ at Fantasy.Event.EventComponent.Publish[TEventData](TEventData eventData)
+ at Fantasy.Timer.TimerSchedulerNet.<>c__DisplayClass18_0`1.g__OnceTimerVoid|0()
+ at Fantasy.Timer.TimerSchedulerNet.Update()
+ at Fantasy.Entitas.EntityComponent.Update()
+ at Fantasy.Scene.Update()
+ at Fantasy.MultiThreadScheduler.Loop(Scene scene, CancellationToken cancellationToken)
+ at Fantasy.MultiThreadScheduler.<>c__DisplayClass5_0.b__0()
+
+2025-04-11 15:34:47.3929 coroutine lock timeout CoroutineLockQueueType:140718960075648 Key:2589053238644834304 Tag:
+ at Fantasy.Async.OnCoroutineLockTimeout.Handler(CoroutineLockTimeout self)
+ at Fantasy.Event.EventSystem`1.Invoke(Object self)
+ at Fantasy.Event.EventComponent.Publish[TEventData](TEventData eventData)
+ at Fantasy.Timer.TimerSchedulerNet.<>c__DisplayClass18_0`1.g__OnceTimerVoid|0()
+ at Fantasy.Timer.TimerSchedulerNet.Update()
+ at Fantasy.Entitas.EntityComponent.Update()
+ at Fantasy.Scene.Update()
+ at Fantasy.MultiThreadScheduler.Loop(Scene scene, CancellationToken cancellationToken)
+ at Fantasy.MultiThreadScheduler.<>c__DisplayClass5_0.b__0()
+
+2025-04-11 15:34:48.8810 Unsupported protocol type:Fantasy.C2Chat_BoardMessageRequest rpcId:3
+ at Fantasy.Scheduler.NetworkMessagingComponent.ReturnMessageSender(UInt32 rpcId, MessageSender messageSender)
+ at Fantasy.Scheduler.OnNetworkMessageUpdateCheckTimeout.Handler(NetworkMessageUpdate self)
+ at Fantasy.Event.EventSystem`1.Invoke(Object self)
+ at Fantasy.Event.EventComponent.Publish[TEventData](TEventData eventData)
+ at Fantasy.Timer.TimerSchedulerNet.<>c__DisplayClass22_0`1.g__RepeatedTimerVoid|0()
+ at Fantasy.Timer.TimerSchedulerNet.Update()
+ at Fantasy.Entitas.EntityComponent.Update()
+ at Fantasy.Scene.Update()
+ at Fantasy.MultiThreadScheduler.Loop(Scene scene, CancellationToken cancellationToken)
+ at Fantasy.MultiThreadScheduler.<>c__DisplayClass5_0.b__0()
+
+2025-04-11 15:34:48.8810 Unsupported protocol type:Fantasy.C2Chat_BoardMessageRequest rpcId:4
+ at Fantasy.Scheduler.NetworkMessagingComponent.ReturnMessageSender(UInt32 rpcId, MessageSender messageSender)
+ at Fantasy.Scheduler.OnNetworkMessageUpdateCheckTimeout.Handler(NetworkMessageUpdate self)
+ at Fantasy.Event.EventSystem`1.Invoke(Object self)
+ at Fantasy.Event.EventComponent.Publish[TEventData](TEventData eventData)
+ at Fantasy.Timer.TimerSchedulerNet.<>c__DisplayClass22_0`1.g__RepeatedTimerVoid|0()
+ at Fantasy.Timer.TimerSchedulerNet.Update()
+ at Fantasy.Entitas.EntityComponent.Update()
+ at Fantasy.Scene.Update()
+ at Fantasy.MultiThreadScheduler.Loop(Scene scene, CancellationToken cancellationToken)
+ at Fantasy.MultiThreadScheduler.<>c__DisplayClass5_0.b__0()
+
+2025-04-11 15:34:48.8810 Unsupported protocol type:Fantasy.C2Chat_BoardMessageRequest rpcId:5
+ at Fantasy.Scheduler.NetworkMessagingComponent.ReturnMessageSender(UInt32 rpcId, MessageSender messageSender)
+ at Fantasy.Scheduler.OnNetworkMessageUpdateCheckTimeout.Handler(NetworkMessageUpdate self)
+ at Fantasy.Event.EventSystem`1.Invoke(Object self)
+ at Fantasy.Event.EventComponent.Publish[TEventData](TEventData eventData)
+ at Fantasy.Timer.TimerSchedulerNet.<>c__DisplayClass22_0`1.g__RepeatedTimerVoid|0()
+ at Fantasy.Timer.TimerSchedulerNet.Update()
+ at Fantasy.Entitas.EntityComponent.Update()
+ at Fantasy.Scene.Update()
+ at Fantasy.MultiThreadScheduler.Loop(Scene scene, CancellationToken cancellationToken)
+ at Fantasy.MultiThreadScheduler.<>c__DisplayClass5_0.b__0()
+
+2025-04-11 15:34:48.8810 Unsupported protocol type:Fantasy.C2Chat_BoardMessageRequest rpcId:6
+ at Fantasy.Scheduler.NetworkMessagingComponent.ReturnMessageSender(UInt32 rpcId, MessageSender messageSender)
+ at Fantasy.Scheduler.OnNetworkMessageUpdateCheckTimeout.Handler(NetworkMessageUpdate self)
+ at Fantasy.Event.EventSystem`1.Invoke(Object self)
+ at Fantasy.Event.EventComponent.Publish[TEventData](TEventData eventData)
+ at Fantasy.Timer.TimerSchedulerNet.<>c__DisplayClass22_0`1.g__RepeatedTimerVoid|0()
+ at Fantasy.Timer.TimerSchedulerNet.Update()
+ at Fantasy.Entitas.EntityComponent.Update()
+ at Fantasy.Scene.Update()
+ at Fantasy.MultiThreadScheduler.Loop(Scene scene, CancellationToken cancellationToken)
+ at Fantasy.MultiThreadScheduler.<>c__DisplayClass5_0.b__0()
+
+2025-04-11 15:34:48.8810 Unsupported protocol type:Fantasy.C2Chat_BoardMessageRequest rpcId:7
+ at Fantasy.Scheduler.NetworkMessagingComponent.ReturnMessageSender(UInt32 rpcId, MessageSender messageSender)
+ at Fantasy.Scheduler.OnNetworkMessageUpdateCheckTimeout.Handler(NetworkMessageUpdate self)
+ at Fantasy.Event.EventSystem`1.Invoke(Object self)
+ at Fantasy.Event.EventComponent.Publish[TEventData](TEventData eventData)
+ at Fantasy.Timer.TimerSchedulerNet.<>c__DisplayClass22_0`1.g__RepeatedTimerVoid|0()
+ at Fantasy.Timer.TimerSchedulerNet.Update()
+ at Fantasy.Entitas.EntityComponent.Update()
+ at Fantasy.Scene.Update()
+ at Fantasy.MultiThreadScheduler.Loop(Scene scene, CancellationToken cancellationToken)
+ at Fantasy.MultiThreadScheduler.<>c__DisplayClass5_0.b__0()
+
+2025-04-11 15:34:48.8810 Unsupported protocol type:Fantasy.C2Chat_BoardMessageRequest rpcId:8
+ at Fantasy.Scheduler.NetworkMessagingComponent.ReturnMessageSender(UInt32 rpcId, MessageSender messageSender)
+ at Fantasy.Scheduler.OnNetworkMessageUpdateCheckTimeout.Handler(NetworkMessageUpdate self)
+ at Fantasy.Event.EventSystem`1.Invoke(Object self)
+ at Fantasy.Event.EventComponent.Publish[TEventData](TEventData eventData)
+ at Fantasy.Timer.TimerSchedulerNet.<>c__DisplayClass22_0`1.g__RepeatedTimerVoid|0()
+ at Fantasy.Timer.TimerSchedulerNet.Update()
+ at Fantasy.Entitas.EntityComponent.Update()
+ at Fantasy.Scene.Update()
+ at Fantasy.MultiThreadScheduler.Loop(Scene scene, CancellationToken cancellationToken)
+ at Fantasy.MultiThreadScheduler.<>c__DisplayClass5_0.b__0()
+
+2025-04-11 15:34:48.8810 Unsupported protocol type:Fantasy.C2Chat_BoardMessageRequest rpcId:9
+ at Fantasy.Scheduler.NetworkMessagingComponent.ReturnMessageSender(UInt32 rpcId, MessageSender messageSender)
+ at Fantasy.Scheduler.OnNetworkMessageUpdateCheckTimeout.Handler(NetworkMessageUpdate self)
+ at Fantasy.Event.EventSystem`1.Invoke(Object self)
+ at Fantasy.Event.EventComponent.Publish[TEventData](TEventData eventData)
+ at Fantasy.Timer.TimerSchedulerNet.<>c__DisplayClass22_0`1.g__RepeatedTimerVoid|0()
+ at Fantasy.Timer.TimerSchedulerNet.Update()
+ at Fantasy.Entitas.EntityComponent.Update()
+ at Fantasy.Scene.Update()
+ at Fantasy.MultiThreadScheduler.Loop(Scene scene, CancellationToken cancellationToken)
+ at Fantasy.MultiThreadScheduler.<>c__DisplayClass5_0.b__0()
+
+2025-04-11 15:34:48.8810 Unsupported protocol type:Fantasy.C2Chat_BoardMessageRequest rpcId:10
+ at Fantasy.Scheduler.NetworkMessagingComponent.ReturnMessageSender(UInt32 rpcId, MessageSender messageSender)
+ at Fantasy.Scheduler.OnNetworkMessageUpdateCheckTimeout.Handler(NetworkMessageUpdate self)
+ at Fantasy.Event.EventSystem`1.Invoke(Object self)
+ at Fantasy.Event.EventComponent.Publish[TEventData](TEventData eventData)
+ at Fantasy.Timer.TimerSchedulerNet.<>c__DisplayClass22_0`1.g__RepeatedTimerVoid|0()
+ at Fantasy.Timer.TimerSchedulerNet.Update()
+ at Fantasy.Entitas.EntityComponent.Update()
+ at Fantasy.Scene.Update()
+ at Fantasy.MultiThreadScheduler.Loop(Scene scene, CancellationToken cancellationToken)
+ at Fantasy.MultiThreadScheduler.<>c__DisplayClass5_0.b__0()
+
+2025-04-11 15:34:49.4911 coroutine lock timeout CoroutineLockQueueType:140718960075648 Key:2589053238644834304 Tag:
+ at Fantasy.Async.OnCoroutineLockTimeout.Handler(CoroutineLockTimeout self)
+ at Fantasy.Event.EventSystem`1.Invoke(Object self)
+ at Fantasy.Event.EventComponent.Publish[TEventData](TEventData eventData)
+ at Fantasy.Timer.TimerSchedulerNet.<>c__DisplayClass18_0`1.g__OnceTimerVoid|0()
+ at Fantasy.Timer.TimerSchedulerNet.Update()
+ at Fantasy.Entitas.EntityComponent.Update()
+ at Fantasy.Scene.Update()
+ at Fantasy.MultiThreadScheduler.Loop(Scene scene, CancellationToken cancellationToken)
+ at Fantasy.MultiThreadScheduler.<>c__DisplayClass5_0.b__0()
+
+2025-04-11 15:34:49.7158 coroutine lock timeout CoroutineLockQueueType:140718960075648 Key:2589053238644834304 Tag:
+ at Fantasy.Async.OnCoroutineLockTimeout.Handler(CoroutineLockTimeout self)
+ at Fantasy.Event.EventSystem`1.Invoke(Object self)
+ at Fantasy.Event.EventComponent.Publish[TEventData](TEventData eventData)
+ at Fantasy.Timer.TimerSchedulerNet.<>c__DisplayClass18_0`1.g__OnceTimerVoid|0()
+ at Fantasy.Timer.TimerSchedulerNet.Update()
+ at Fantasy.Entitas.EntityComponent.Update()
+ at Fantasy.Scene.Update()
+ at Fantasy.MultiThreadScheduler.Loop(Scene scene, CancellationToken cancellationToken)
+ at Fantasy.MultiThreadScheduler.<>c__DisplayClass5_0.b__0()
+
+2025-04-11 15:34:49.9205 coroutine lock timeout CoroutineLockQueueType:140718960075648 Key:2589053238644834304 Tag:
+ at Fantasy.Async.OnCoroutineLockTimeout.Handler(CoroutineLockTimeout self)
+ at Fantasy.Event.EventSystem`1.Invoke(Object self)
+ at Fantasy.Event.EventComponent.Publish[TEventData](TEventData eventData)
+ at Fantasy.Timer.TimerSchedulerNet.<>c__DisplayClass18_0`1.g__OnceTimerVoid|0()
+ at Fantasy.Timer.TimerSchedulerNet.Update()
+ at Fantasy.Entitas.EntityComponent.Update()
+ at Fantasy.Scene.Update()
+ at Fantasy.MultiThreadScheduler.Loop(Scene scene, CancellationToken cancellationToken)
+ at Fantasy.MultiThreadScheduler.<>c__DisplayClass5_0.b__0()
+
+2025-04-11 15:34:50.1102 coroutine lock timeout CoroutineLockQueueType:140718960075648 Key:2589053238644834304 Tag:
+ at Fantasy.Async.OnCoroutineLockTimeout.Handler(CoroutineLockTimeout self)
+ at Fantasy.Event.EventSystem`1.Invoke(Object self)
+ at Fantasy.Event.EventComponent.Publish[TEventData](TEventData eventData)
+ at Fantasy.Timer.TimerSchedulerNet.<>c__DisplayClass18_0`1.g__OnceTimerVoid|0()
+ at Fantasy.Timer.TimerSchedulerNet.Update()
+ at Fantasy.Entitas.EntityComponent.Update()
+ at Fantasy.Scene.Update()
+ at Fantasy.MultiThreadScheduler.Loop(Scene scene, CancellationToken cancellationToken)
+ at Fantasy.MultiThreadScheduler.<>c__DisplayClass5_0.b__0()
+
+2025-04-11 15:34:50.3128 coroutine lock timeout CoroutineLockQueueType:140718960075648 Key:2589053238644834304 Tag:
+ at Fantasy.Async.OnCoroutineLockTimeout.Handler(CoroutineLockTimeout self)
+ at Fantasy.Event.EventSystem`1.Invoke(Object self)
+ at Fantasy.Event.EventComponent.Publish[TEventData](TEventData eventData)
+ at Fantasy.Timer.TimerSchedulerNet.<>c__DisplayClass18_0`1.g__OnceTimerVoid|0()
+ at Fantasy.Timer.TimerSchedulerNet.Update()
+ at Fantasy.Entitas.EntityComponent.Update()
+ at Fantasy.Scene.Update()
+ at Fantasy.MultiThreadScheduler.Loop(Scene scene, CancellationToken cancellationToken)
+ at Fantasy.MultiThreadScheduler.<>c__DisplayClass5_0.b__0()
+
+2025-04-11 15:34:50.5103 coroutine lock timeout CoroutineLockQueueType:140718960075648 Key:2589053238644834304 Tag:
+ at Fantasy.Async.OnCoroutineLockTimeout.Handler(CoroutineLockTimeout self)
+ at Fantasy.Event.EventSystem`1.Invoke(Object self)
+ at Fantasy.Event.EventComponent.Publish[TEventData](TEventData eventData)
+ at Fantasy.Timer.TimerSchedulerNet.<>c__DisplayClass18_0`1.g__OnceTimerVoid|0()
+ at Fantasy.Timer.TimerSchedulerNet.Update()
+ at Fantasy.Entitas.EntityComponent.Update()
+ at Fantasy.Scene.Update()
+ at Fantasy.MultiThreadScheduler.Loop(Scene scene, CancellationToken cancellationToken)
+ at Fantasy.MultiThreadScheduler.<>c__DisplayClass5_0.b__0()
+
+2025-04-11 15:34:50.6892 coroutine lock timeout CoroutineLockQueueType:140718960075648 Key:2589053238644834304 Tag:
+ at Fantasy.Async.OnCoroutineLockTimeout.Handler(CoroutineLockTimeout self)
+ at Fantasy.Event.EventSystem`1.Invoke(Object self)
+ at Fantasy.Event.EventComponent.Publish[TEventData](TEventData eventData)
+ at Fantasy.Timer.TimerSchedulerNet.<>c__DisplayClass18_0`1.g__OnceTimerVoid|0()
+ at Fantasy.Timer.TimerSchedulerNet.Update()
+ at Fantasy.Entitas.EntityComponent.Update()
+ at Fantasy.Scene.Update()
+ at Fantasy.MultiThreadScheduler.Loop(Scene scene, CancellationToken cancellationToken)
+ at Fantasy.MultiThreadScheduler.<>c__DisplayClass5_0.b__0()
+
+2025-04-11 15:34:50.8485 coroutine lock timeout CoroutineLockQueueType:140718960075648 Key:2589053238644834304 Tag:
+ at Fantasy.Async.OnCoroutineLockTimeout.Handler(CoroutineLockTimeout self)
+ at Fantasy.Event.EventSystem`1.Invoke(Object self)
+ at Fantasy.Event.EventComponent.Publish[TEventData](TEventData eventData)
+ at Fantasy.Timer.TimerSchedulerNet.<>c__DisplayClass18_0`1.g__OnceTimerVoid|0()
+ at Fantasy.Timer.TimerSchedulerNet.Update()
+ at Fantasy.Entitas.EntityComponent.Update()
+ at Fantasy.Scene.Update()
+ at Fantasy.MultiThreadScheduler.Loop(Scene scene, CancellationToken cancellationToken)
+ at Fantasy.MultiThreadScheduler.<>c__DisplayClass5_0.b__0()
+
+2025-04-11 15:34:51.0574 coroutine lock timeout CoroutineLockQueueType:140718960075648 Key:2589053238644834304 Tag:
+ at Fantasy.Async.OnCoroutineLockTimeout.Handler(CoroutineLockTimeout self)
+ at Fantasy.Event.EventSystem`1.Invoke(Object self)
+ at Fantasy.Event.EventComponent.Publish[TEventData](TEventData eventData)
+ at Fantasy.Timer.TimerSchedulerNet.<>c__DisplayClass18_0`1.g__OnceTimerVoid|0()
+ at Fantasy.Timer.TimerSchedulerNet.Update()
+ at Fantasy.Entitas.EntityComponent.Update()
+ at Fantasy.Scene.Update()
+ at Fantasy.MultiThreadScheduler.Loop(Scene scene, CancellationToken cancellationToken)
+ at Fantasy.MultiThreadScheduler.<>c__DisplayClass5_0.b__0()
+
+2025-04-11 15:34:51.2710 coroutine lock timeout CoroutineLockQueueType:140718960075648 Key:2589053238644834304 Tag:
+ at Fantasy.Async.OnCoroutineLockTimeout.Handler(CoroutineLockTimeout self)
+ at Fantasy.Event.EventSystem`1.Invoke(Object self)
+ at Fantasy.Event.EventComponent.Publish[TEventData](TEventData eventData)
+ at Fantasy.Timer.TimerSchedulerNet.<>c__DisplayClass18_0`1.g__OnceTimerVoid|0()
+ at Fantasy.Timer.TimerSchedulerNet.Update()
+ at Fantasy.Entitas.EntityComponent.Update()
+ at Fantasy.Scene.Update()
+ at Fantasy.MultiThreadScheduler.Loop(Scene scene, CancellationToken cancellationToken)
+ at Fantasy.MultiThreadScheduler.<>c__DisplayClass5_0.b__0()
+
+2025-04-11 15:34:51.4735 coroutine lock timeout CoroutineLockQueueType:140718960075648 Key:2589053238644834304 Tag:
+ at Fantasy.Async.OnCoroutineLockTimeout.Handler(CoroutineLockTimeout self)
+ at Fantasy.Event.EventSystem`1.Invoke(Object self)
+ at Fantasy.Event.EventComponent.Publish[TEventData](TEventData eventData)
+ at Fantasy.Timer.TimerSchedulerNet.<>c__DisplayClass18_0`1.g__OnceTimerVoid|0()
+ at Fantasy.Timer.TimerSchedulerNet.Update()
+ at Fantasy.Entitas.EntityComponent.Update()
+ at Fantasy.Scene.Update()
+ at Fantasy.MultiThreadScheduler.Loop(Scene scene, CancellationToken cancellationToken)
+ at Fantasy.MultiThreadScheduler.<>c__DisplayClass5_0.b__0()
+
+2025-04-11 15:34:51.6747 coroutine lock timeout CoroutineLockQueueType:140718960075648 Key:2589053238644834304 Tag:
+ at Fantasy.Async.OnCoroutineLockTimeout.Handler(CoroutineLockTimeout self)
+ at Fantasy.Event.EventSystem`1.Invoke(Object self)
+ at Fantasy.Event.EventComponent.Publish[TEventData](TEventData eventData)
+ at Fantasy.Timer.TimerSchedulerNet.<>c__DisplayClass18_0`1.g__OnceTimerVoid|0()
+ at Fantasy.Timer.TimerSchedulerNet.Update()
+ at Fantasy.Entitas.EntityComponent.Update()
+ at Fantasy.Scene.Update()
+ at Fantasy.MultiThreadScheduler.Loop(Scene scene, CancellationToken cancellationToken)
+ at Fantasy.MultiThreadScheduler.<>c__DisplayClass5_0.b__0()
+
+2025-04-11 15:34:51.9875 coroutine lock timeout CoroutineLockQueueType:140718960075648 Key:2589053238644834304 Tag:
+ at Fantasy.Async.OnCoroutineLockTimeout.Handler(CoroutineLockTimeout self)
+ at Fantasy.Event.EventSystem`1.Invoke(Object self)
+ at Fantasy.Event.EventComponent.Publish[TEventData](TEventData eventData)
+ at Fantasy.Timer.TimerSchedulerNet.<>c__DisplayClass18_0`1.g__OnceTimerVoid|0()
+ at Fantasy.Timer.TimerSchedulerNet.Update()
+ at Fantasy.Entitas.EntityComponent.Update()
+ at Fantasy.Scene.Update()
+ at Fantasy.MultiThreadScheduler.Loop(Scene scene, CancellationToken cancellationToken)
+ at Fantasy.MultiThreadScheduler.<>c__DisplayClass5_0.b__0()
+
+2025-04-11 15:34:58.8810 Unsupported protocol type:Fantasy.C2Chat_BoardMessageRequest rpcId:11
+ at Fantasy.Scheduler.NetworkMessagingComponent.ReturnMessageSender(UInt32 rpcId, MessageSender messageSender)
+ at Fantasy.Scheduler.OnNetworkMessageUpdateCheckTimeout.Handler(NetworkMessageUpdate self)
+ at Fantasy.Event.EventSystem`1.Invoke(Object self)
+ at Fantasy.Event.EventComponent.Publish[TEventData](TEventData eventData)
+ at Fantasy.Timer.TimerSchedulerNet.<>c__DisplayClass22_0`1.g__RepeatedTimerVoid|0()
+ at Fantasy.Timer.TimerSchedulerNet.Update()
+ at Fantasy.Entitas.EntityComponent.Update()
+ at Fantasy.Scene.Update()
+ at Fantasy.MultiThreadScheduler.Loop(Scene scene, CancellationToken cancellationToken)
+ at Fantasy.MultiThreadScheduler.<>c__DisplayClass5_0.b__0()
+
+2025-04-11 15:34:58.8810 Unsupported protocol type:Fantasy.C2Chat_BoardMessageRequest rpcId:12
+ at Fantasy.Scheduler.NetworkMessagingComponent.ReturnMessageSender(UInt32 rpcId, MessageSender messageSender)
+ at Fantasy.Scheduler.OnNetworkMessageUpdateCheckTimeout.Handler(NetworkMessageUpdate self)
+ at Fantasy.Event.EventSystem`1.Invoke(Object self)
+ at Fantasy.Event.EventComponent.Publish[TEventData](TEventData eventData)
+ at Fantasy.Timer.TimerSchedulerNet.<>c__DisplayClass22_0`1.g__RepeatedTimerVoid|0()
+ at Fantasy.Timer.TimerSchedulerNet.Update()
+ at Fantasy.Entitas.EntityComponent.Update()
+ at Fantasy.Scene.Update()
+ at Fantasy.MultiThreadScheduler.Loop(Scene scene, CancellationToken cancellationToken)
+ at Fantasy.MultiThreadScheduler.<>c__DisplayClass5_0.b__0()
+
+2025-04-11 15:34:58.8810 Unsupported protocol type:Fantasy.C2Chat_BoardMessageRequest rpcId:13
+ at Fantasy.Scheduler.NetworkMessagingComponent.ReturnMessageSender(UInt32 rpcId, MessageSender messageSender)
+ at Fantasy.Scheduler.OnNetworkMessageUpdateCheckTimeout.Handler(NetworkMessageUpdate self)
+ at Fantasy.Event.EventSystem`1.Invoke(Object self)
+ at Fantasy.Event.EventComponent.Publish[TEventData](TEventData eventData)
+ at Fantasy.Timer.TimerSchedulerNet.<>c__DisplayClass22_0`1.g__RepeatedTimerVoid|0()
+ at Fantasy.Timer.TimerSchedulerNet.Update()
+ at Fantasy.Entitas.EntityComponent.Update()
+ at Fantasy.Scene.Update()
+ at Fantasy.MultiThreadScheduler.Loop(Scene scene, CancellationToken cancellationToken)
+ at Fantasy.MultiThreadScheduler.<>c__DisplayClass5_0.b__0()
+
+2025-04-11 15:34:58.8810 Unsupported protocol type:Fantasy.C2Chat_BoardMessageRequest rpcId:14
+ at Fantasy.Scheduler.NetworkMessagingComponent.ReturnMessageSender(UInt32 rpcId, MessageSender messageSender)
+ at Fantasy.Scheduler.OnNetworkMessageUpdateCheckTimeout.Handler(NetworkMessageUpdate self)
+ at Fantasy.Event.EventSystem`1.Invoke(Object self)
+ at Fantasy.Event.EventComponent.Publish[TEventData](TEventData eventData)
+ at Fantasy.Timer.TimerSchedulerNet.<>c__DisplayClass22_0`1.g__RepeatedTimerVoid|0()
+ at Fantasy.Timer.TimerSchedulerNet.Update()
+ at Fantasy.Entitas.EntityComponent.Update()
+ at Fantasy.Scene.Update()
+ at Fantasy.MultiThreadScheduler.Loop(Scene scene, CancellationToken cancellationToken)
+ at Fantasy.MultiThreadScheduler.<>c__DisplayClass5_0.b__0()
+
+2025-04-11 15:34:58.8810 Unsupported protocol type:Fantasy.C2Chat_BoardMessageRequest rpcId:15
+ at Fantasy.Scheduler.NetworkMessagingComponent.ReturnMessageSender(UInt32 rpcId, MessageSender messageSender)
+ at Fantasy.Scheduler.OnNetworkMessageUpdateCheckTimeout.Handler(NetworkMessageUpdate self)
+ at Fantasy.Event.EventSystem`1.Invoke(Object self)
+ at Fantasy.Event.EventComponent.Publish[TEventData](TEventData eventData)
+ at Fantasy.Timer.TimerSchedulerNet.<>c__DisplayClass22_0`1.g__RepeatedTimerVoid|0()
+ at Fantasy.Timer.TimerSchedulerNet.Update()
+ at Fantasy.Entitas.EntityComponent.Update()
+ at Fantasy.Scene.Update()
+ at Fantasy.MultiThreadScheduler.Loop(Scene scene, CancellationToken cancellationToken)
+ at Fantasy.MultiThreadScheduler.<>c__DisplayClass5_0.b__0()
+
+2025-04-11 15:34:58.8810 Unsupported protocol type:Fantasy.C2Chat_BoardMessageRequest rpcId:16
+ at Fantasy.Scheduler.NetworkMessagingComponent.ReturnMessageSender(UInt32 rpcId, MessageSender messageSender)
+ at Fantasy.Scheduler.OnNetworkMessageUpdateCheckTimeout.Handler(NetworkMessageUpdate self)
+ at Fantasy.Event.EventSystem`1.Invoke(Object self)
+ at Fantasy.Event.EventComponent.Publish[TEventData](TEventData eventData)
+ at Fantasy.Timer.TimerSchedulerNet.<>c__DisplayClass22_0`1.g__RepeatedTimerVoid|0()
+ at Fantasy.Timer.TimerSchedulerNet.Update()
+ at Fantasy.Entitas.EntityComponent.Update()
+ at Fantasy.Scene.Update()
+ at Fantasy.MultiThreadScheduler.Loop(Scene scene, CancellationToken cancellationToken)
+ at Fantasy.MultiThreadScheduler.<>c__DisplayClass5_0.b__0()
+
+2025-04-11 15:34:58.8810 Unsupported protocol type:Fantasy.C2Chat_BoardMessageRequest rpcId:17
+ at Fantasy.Scheduler.NetworkMessagingComponent.ReturnMessageSender(UInt32 rpcId, MessageSender messageSender)
+ at Fantasy.Scheduler.OnNetworkMessageUpdateCheckTimeout.Handler(NetworkMessageUpdate self)
+ at Fantasy.Event.EventSystem`1.Invoke(Object self)
+ at Fantasy.Event.EventComponent.Publish[TEventData](TEventData eventData)
+ at Fantasy.Timer.TimerSchedulerNet.<>c__DisplayClass22_0`1.g__RepeatedTimerVoid|0()
+ at Fantasy.Timer.TimerSchedulerNet.Update()
+ at Fantasy.Entitas.EntityComponent.Update()
+ at Fantasy.Scene.Update()
+ at Fantasy.MultiThreadScheduler.Loop(Scene scene, CancellationToken cancellationToken)
+ at Fantasy.MultiThreadScheduler.<>c__DisplayClass5_0.b__0()
+
+2025-04-11 15:34:58.8810 Unsupported protocol type:Fantasy.C2Chat_BoardMessageRequest rpcId:18
+ at Fantasy.Scheduler.NetworkMessagingComponent.ReturnMessageSender(UInt32 rpcId, MessageSender messageSender)
+ at Fantasy.Scheduler.OnNetworkMessageUpdateCheckTimeout.Handler(NetworkMessageUpdate self)
+ at Fantasy.Event.EventSystem`1.Invoke(Object self)
+ at Fantasy.Event.EventComponent.Publish[TEventData](TEventData eventData)
+ at Fantasy.Timer.TimerSchedulerNet.<>c__DisplayClass22_0`1.g__RepeatedTimerVoid|0()
+ at Fantasy.Timer.TimerSchedulerNet.Update()
+ at Fantasy.Entitas.EntityComponent.Update()
+ at Fantasy.Scene.Update()
+ at Fantasy.MultiThreadScheduler.Loop(Scene scene, CancellationToken cancellationToken)
+ at Fantasy.MultiThreadScheduler.<>c__DisplayClass5_0.b__0()
+
+2025-04-11 15:34:58.8810 Unsupported protocol type:Fantasy.C2Chat_BoardMessageRequest rpcId:19
+ at Fantasy.Scheduler.NetworkMessagingComponent.ReturnMessageSender(UInt32 rpcId, MessageSender messageSender)
+ at Fantasy.Scheduler.OnNetworkMessageUpdateCheckTimeout.Handler(NetworkMessageUpdate self)
+ at Fantasy.Event.EventSystem`1.Invoke(Object self)
+ at Fantasy.Event.EventComponent.Publish[TEventData](TEventData eventData)
+ at Fantasy.Timer.TimerSchedulerNet.<>c__DisplayClass22_0`1.g__RepeatedTimerVoid|0()
+ at Fantasy.Timer.TimerSchedulerNet.Update()
+ at Fantasy.Entitas.EntityComponent.Update()
+ at Fantasy.Scene.Update()
+ at Fantasy.MultiThreadScheduler.Loop(Scene scene, CancellationToken cancellationToken)
+ at Fantasy.MultiThreadScheduler.<>c__DisplayClass5_0.b__0()
+
+2025-04-11 15:34:58.8810 Unsupported protocol type:Fantasy.C2Chat_BoardMessageRequest rpcId:20
+ at Fantasy.Scheduler.NetworkMessagingComponent.ReturnMessageSender(UInt32 rpcId, MessageSender messageSender)
+ at Fantasy.Scheduler.OnNetworkMessageUpdateCheckTimeout.Handler(NetworkMessageUpdate self)
+ at Fantasy.Event.EventSystem`1.Invoke(Object self)
+ at Fantasy.Event.EventComponent.Publish[TEventData](TEventData eventData)
+ at Fantasy.Timer.TimerSchedulerNet.<>c__DisplayClass22_0`1.g__RepeatedTimerVoid|0()
+ at Fantasy.Timer.TimerSchedulerNet.Update()
+ at Fantasy.Entitas.EntityComponent.Update()
+ at Fantasy.Scene.Update()
+ at Fantasy.MultiThreadScheduler.Loop(Scene scene, CancellationToken cancellationToken)
+ at Fantasy.MultiThreadScheduler.<>c__DisplayClass5_0.b__0()
+
+2025-04-11 15:34:58.8810 Unsupported protocol type:Fantasy.C2Chat_BoardMessageRequest rpcId:21
+ at Fantasy.Scheduler.NetworkMessagingComponent.ReturnMessageSender(UInt32 rpcId, MessageSender messageSender)
+ at Fantasy.Scheduler.OnNetworkMessageUpdateCheckTimeout.Handler(NetworkMessageUpdate self)
+ at Fantasy.Event.EventSystem`1.Invoke(Object self)
+ at Fantasy.Event.EventComponent.Publish[TEventData](TEventData eventData)
+ at Fantasy.Timer.TimerSchedulerNet.<>c__DisplayClass22_0`1.g__RepeatedTimerVoid|0()
+ at Fantasy.Timer.TimerSchedulerNet.Update()
+ at Fantasy.Entitas.EntityComponent.Update()
+ at Fantasy.Scene.Update()
+ at Fantasy.MultiThreadScheduler.Loop(Scene scene, CancellationToken cancellationToken)
+ at Fantasy.MultiThreadScheduler.<>c__DisplayClass5_0.b__0()
+
+2025-04-11 15:34:58.8810 Unsupported protocol type:Fantasy.C2Chat_BoardMessageRequest rpcId:22
+ at Fantasy.Scheduler.NetworkMessagingComponent.ReturnMessageSender(UInt32 rpcId, MessageSender messageSender)
+ at Fantasy.Scheduler.OnNetworkMessageUpdateCheckTimeout.Handler(NetworkMessageUpdate self)
+ at Fantasy.Event.EventSystem`1.Invoke(Object self)
+ at Fantasy.Event.EventComponent.Publish[TEventData](TEventData eventData)
+ at Fantasy.Timer.TimerSchedulerNet.<>c__DisplayClass22_0`1.g__RepeatedTimerVoid|0()
+ at Fantasy.Timer.TimerSchedulerNet.Update()
+ at Fantasy.Entitas.EntityComponent.Update()
+ at Fantasy.Scene.Update()
+ at Fantasy.MultiThreadScheduler.Loop(Scene scene, CancellationToken cancellationToken)
+ at Fantasy.MultiThreadScheduler.<>c__DisplayClass5_0.b__0()
+
+2025-04-11 15:34:58.8810 Unsupported protocol type:Fantasy.C2Chat_BoardMessageRequest rpcId:23
+ at Fantasy.Scheduler.NetworkMessagingComponent.ReturnMessageSender(UInt32 rpcId, MessageSender messageSender)
+ at Fantasy.Scheduler.OnNetworkMessageUpdateCheckTimeout.Handler(NetworkMessageUpdate self)
+ at Fantasy.Event.EventSystem`1.Invoke(Object self)
+ at Fantasy.Event.EventComponent.Publish[TEventData](TEventData eventData)
+ at Fantasy.Timer.TimerSchedulerNet.<>c__DisplayClass22_0`1.g__RepeatedTimerVoid|0()
+ at Fantasy.Timer.TimerSchedulerNet.Update()
+ at Fantasy.Entitas.EntityComponent.Update()
+ at Fantasy.Scene.Update()
+ at Fantasy.MultiThreadScheduler.Loop(Scene scene, CancellationToken cancellationToken)
+ at Fantasy.MultiThreadScheduler.<>c__DisplayClass5_0.b__0()
+
+2025-04-11 15:34:58.8810 Unsupported protocol type:Fantasy.C2Chat_BoardMessageRequest rpcId:24
+ at Fantasy.Scheduler.NetworkMessagingComponent.ReturnMessageSender(UInt32 rpcId, MessageSender messageSender)
+ at Fantasy.Scheduler.OnNetworkMessageUpdateCheckTimeout.Handler(NetworkMessageUpdate self)
+ at Fantasy.Event.EventSystem`1.Invoke(Object self)
+ at Fantasy.Event.EventComponent.Publish[TEventData](TEventData eventData)
+ at Fantasy.Timer.TimerSchedulerNet.<>c__DisplayClass22_0`1.g__RepeatedTimerVoid|0()
+ at Fantasy.Timer.TimerSchedulerNet.Update()
+ at Fantasy.Entitas.EntityComponent.Update()
+ at Fantasy.Scene.Update()
+ at Fantasy.MultiThreadScheduler.Loop(Scene scene, CancellationToken cancellationToken)
+ at Fantasy.MultiThreadScheduler.<>c__DisplayClass5_0.b__0()
+
+2025-04-11 15:38:28.7675 coroutine lock timeout CoroutineLockQueueType:140718960002680 Key:2589354504830844928 Tag:
+ at Fantasy.Async.OnCoroutineLockTimeout.Handler(CoroutineLockTimeout self)
+ at Fantasy.Event.EventSystem`1.Invoke(Object self)
+ at Fantasy.Event.EventComponent.Publish[TEventData](TEventData eventData)
+ at Fantasy.Timer.TimerSchedulerNet.<>c__DisplayClass18_0`1.g__OnceTimerVoid|0()
+ at Fantasy.Timer.TimerSchedulerNet.Update()
+ at Fantasy.Entitas.EntityComponent.Update()
+ at Fantasy.Scene.Update()
+ at Fantasy.MultiThreadScheduler.Loop(Scene scene, CancellationToken cancellationToken)
+ at Fantasy.MultiThreadScheduler.<>c__DisplayClass5_0.b__0()
+
+2025-04-11 15:38:46.3961 Unsupported protocol type:Fantasy.C2Chat_BoardMessageRequest rpcId:4
+ at Fantasy.Scheduler.NetworkMessagingComponent.ReturnMessageSender(UInt32 rpcId, MessageSender messageSender)
+ at Fantasy.Scheduler.OnNetworkMessageUpdateCheckTimeout.Handler(NetworkMessageUpdate self)
+ at Fantasy.Event.EventSystem`1.Invoke(Object self)
+ at Fantasy.Event.EventComponent.Publish[TEventData](TEventData eventData)
+ at Fantasy.Timer.TimerSchedulerNet.Update()
+ at Fantasy.Entitas.EntityComponent.Update()
+ at Fantasy.Scene.Update()
+ at Fantasy.MultiThreadScheduler.Loop(Scene scene, CancellationToken cancellationToken)
+ at Fantasy.MultiThreadScheduler.<>c__DisplayClass5_0.b__0()
+
+2025-04-11 15:38:58.9700 coroutine lock timeout CoroutineLockQueueType:140718960002680 Key:2589354504830844928 Tag:
+ at Fantasy.Async.OnCoroutineLockTimeout.Handler(CoroutineLockTimeout self)
+ at Fantasy.Event.EventSystem`1.Invoke(Object self)
+ at Fantasy.Event.EventComponent.Publish[TEventData](TEventData eventData)
+ at Fantasy.Timer.TimerSchedulerNet.<>c__DisplayClass18_0`1.g__OnceTimerVoid|0()
+ at Fantasy.Timer.TimerSchedulerNet.Update()
+ at Fantasy.Entitas.EntityComponent.Update()
+ at Fantasy.Scene.Update()
+ at Fantasy.MultiThreadScheduler.Loop(Scene scene, CancellationToken cancellationToken)
+ at Fantasy.MultiThreadScheduler.<>c__DisplayClass5_0.b__0()
+
+2025-04-11 15:47:03.0395 coroutine lock timeout CoroutineLockQueueType:140718960002680 Key:2589163189807611904 Tag:
+ at Fantasy.Async.OnCoroutineLockTimeout.Handler(CoroutineLockTimeout self)
+ at Fantasy.Event.EventSystem`1.Invoke(Object self)
+ at Fantasy.Event.EventComponent.Publish[TEventData](TEventData eventData)
+ at Fantasy.Timer.TimerSchedulerNet.<>c__DisplayClass18_0`1.g__OnceTimerVoid|0()
+ at Fantasy.Timer.TimerSchedulerNet.Update()
+ at Fantasy.Entitas.EntityComponent.Update()
+ at Fantasy.Scene.Update()
+ at Fantasy.MultiThreadScheduler.Loop(Scene scene, CancellationToken cancellationToken)
+ at Fantasy.MultiThreadScheduler.<>c__DisplayClass5_0.b__0()
+
+2025-04-11 15:47:18.2844 Unsupported protocol type:Fantasy.C2Chat_BoardMessageRequest rpcId:2
+ at Fantasy.Scheduler.NetworkMessagingComponent.ReturnMessageSender(UInt32 rpcId, MessageSender messageSender)
+ at Fantasy.Scheduler.OnNetworkMessageUpdateCheckTimeout.Handler(NetworkMessageUpdate self)
+ at Fantasy.Event.EventSystem`1.Invoke(Object self)
+ at Fantasy.Event.EventComponent.Publish[TEventData](TEventData eventData)
+ at Fantasy.Timer.TimerSchedulerNet.<>c__DisplayClass22_0`1.g__RepeatedTimerVoid|0()
+ at Fantasy.Timer.TimerSchedulerNet.Update()
+ at Fantasy.Entitas.EntityComponent.Update()
+ at Fantasy.Scene.Update()
+ at Fantasy.MultiThreadScheduler.Loop(Scene scene, CancellationToken cancellationToken)
+ at Fantasy.MultiThreadScheduler.<>c__DisplayClass5_0.b__0()
+
+2025-04-11 15:50:29.1380 coroutine lock timeout CoroutineLockQueueType:140718959871608 Key:2589081825947156480 Tag:
+ at Fantasy.Async.OnCoroutineLockTimeout.Handler(CoroutineLockTimeout self)
+ at Fantasy.Event.EventSystem`1.Invoke(Object self)
+ at Fantasy.Event.EventComponent.Publish[TEventData](TEventData eventData)
+ at Fantasy.Timer.TimerSchedulerNet.<>c__DisplayClass18_0`1.g__OnceTimerVoid|0()
+ at Fantasy.Timer.TimerSchedulerNet.Update()
+ at Fantasy.Entitas.EntityComponent.Update()
+ at Fantasy.Scene.Update()
+ at Fantasy.MultiThreadScheduler.Loop(Scene scene, CancellationToken cancellationToken)
+ at Fantasy.MultiThreadScheduler.<>c__DisplayClass5_0.b__0()
+
+2025-04-11 15:54:08.0398 coroutine lock timeout CoroutineLockQueueType:140718960133752 Key:2589029049389023232 Tag:
+ at Fantasy.Async.OnCoroutineLockTimeout.Handler(CoroutineLockTimeout self)
+ at Fantasy.Event.EventSystem`1.Invoke(Object self)
+ at Fantasy.Event.EventComponent.Publish[TEventData](TEventData eventData)
+ at Fantasy.Timer.TimerSchedulerNet.<>c__DisplayClass18_0`1.g__OnceTimerVoid|0()
+ at Fantasy.Timer.TimerSchedulerNet.Update()
+ at Fantasy.Entitas.EntityComponent.Update()
+ at Fantasy.Scene.Update()
+ at Fantasy.MultiThreadScheduler.Loop(Scene scene, CancellationToken cancellationToken)
+ at Fantasy.MultiThreadScheduler.<>c__DisplayClass5_0.b__0()
+
+2025-04-11 15:54:24.0541 Unsupported protocol type:Fantasy.C2Chat_BoardMessageRequest rpcId:2
+ at Fantasy.Scheduler.NetworkMessagingComponent.ReturnMessageSender(UInt32 rpcId, MessageSender messageSender)
+ at Fantasy.Scheduler.OnNetworkMessageUpdateCheckTimeout.Handler(NetworkMessageUpdate self)
+ at Fantasy.Event.EventSystem`1.Invoke(Object self)
+ at Fantasy.Event.EventComponent.Publish[TEventData](TEventData eventData)
+ at Fantasy.Timer.TimerSchedulerNet.<>c__DisplayClass22_0`1.g__RepeatedTimerVoid|0()
+ at Fantasy.Timer.TimerSchedulerNet.Update()
+ at Fantasy.Entitas.EntityComponent.Update()
+ at Fantasy.Scene.Update()
+ at Fantasy.MultiThreadScheduler.Loop(Scene scene, CancellationToken cancellationToken)
+ at Fantasy.MultiThreadScheduler.<>c__DisplayClass5_0.b__0()
+
diff --git a/GameServer/Bin/Debug/Logs/Server/Server20250411/Server..2025041115.Info.log b/GameServer/Bin/Debug/Logs/Server/Server20250411/Server..2025041115.Info.log
new file mode 100644
index 00000000..82abddbc
--- /dev/null
+++ b/GameServer/Bin/Debug/Logs/Server/Server20250411/Server..2025041115.Info.log
@@ -0,0 +1,121 @@
+2025-04-11 15:33:26.5739 初始化序列化器成功,数量为:2
+2025-04-11 15:33:27.3874 SceneConfigId = 1001 networkTarget = Inner TCPServer Listen 127.0.0.1:11001
+2025-04-11 15:33:27.6503 SceneConfigId = 1001 networkTarget = Outer KCPServer Listen 127.0.0.1:21001
+2025-04-11 15:33:27.7754 (AuthenticationJWTComponentSystem.cs:44) RSA密钥导入成功
+2025-04-11 15:33:27.9906 SceneConfigId = 1002 networkTarget = Inner TCPServer Listen 127.0.0.1:11002
+2025-04-11 15:33:28.3029 SceneConfigId = 1002 networkTarget = Outer KCPServer Listen 127.0.0.1:21002
+2025-04-11 15:33:28.3052 (AuthenticationJWTComponentSystem.cs:44) RSA密钥导入成功
+2025-04-11 15:33:28.6006 SceneConfigId = 1010 networkTarget = Inner TCPServer Listen 127.0.0.1:11010
+2025-04-11 15:33:28.8746 SceneConfigId = 1010 networkTarget = Outer KCPServer Listen 127.0.0.1:21010
+2025-04-11 15:33:29.1824 SceneConfigId = 1011 networkTarget = Inner TCPServer Listen 127.0.0.1:11011
+2025-04-11 15:33:29.4622 SceneConfigId = 1011 networkTarget = Outer KCPServer Listen 127.0.0.1:21011
+2025-04-11 15:33:29.7341 SceneConfigId = 1026 networkTarget = Inner TCPServer Listen 127.0.0.1:11026
+2025-04-11 15:33:29.9710 SceneConfigId = 1026 networkTarget = Outer TCPServer Listen 127.0.0.1:21016
+2025-04-11 15:33:29.9710 Process:1 Startup Complete SceneCount:5
+2025-04-11 15:33:50.8991 (G2Chat_LoginRequestHandler.cs:19) 登录聊天服务器成功 SnowShow AccountId 116299279127281665 GateRoutedId 2589053109795815424
+2025-04-11 15:35:14.7202 初始化序列化器成功,数量为:2
+2025-04-11 15:35:15.3431 SceneConfigId = 1001 networkTarget = Inner TCPServer Listen 127.0.0.1:11001
+2025-04-11 15:35:15.5644 SceneConfigId = 1001 networkTarget = Outer KCPServer Listen 127.0.0.1:21001
+2025-04-11 15:35:15.5785 (AuthenticationJWTComponentSystem.cs:44) RSA密钥导入成功
+2025-04-11 15:35:15.7682 SceneConfigId = 1002 networkTarget = Inner TCPServer Listen 127.0.0.1:11002
+2025-04-11 15:35:15.9484 SceneConfigId = 1002 networkTarget = Outer KCPServer Listen 127.0.0.1:21002
+2025-04-11 15:35:15.9484 (AuthenticationJWTComponentSystem.cs:44) RSA密钥导入成功
+2025-04-11 15:35:16.1532 SceneConfigId = 1010 networkTarget = Inner TCPServer Listen 127.0.0.1:11010
+2025-04-11 15:35:16.3260 SceneConfigId = 1010 networkTarget = Outer KCPServer Listen 127.0.0.1:21010
+2025-04-11 15:35:16.5374 SceneConfigId = 1011 networkTarget = Inner TCPServer Listen 127.0.0.1:11011
+2025-04-11 15:35:16.7161 SceneConfigId = 1011 networkTarget = Outer KCPServer Listen 127.0.0.1:21011
+2025-04-11 15:35:16.9317 SceneConfigId = 1026 networkTarget = Inner TCPServer Listen 127.0.0.1:11026
+2025-04-11 15:35:17.1325 SceneConfigId = 1026 networkTarget = Outer TCPServer Listen 127.0.0.1:21016
+2025-04-11 15:35:17.1325 Process:1 Startup Complete SceneCount:5
+2025-04-11 15:36:06.2898 (G2Chat_LoginRequestHandler.cs:19) 登录聊天服务器成功 SnowShow AccountId 116299279127281665 GateRoutedId 2589114682446970880
+2025-04-11 15:37:54.7417 (G2Chat_LoginRequestHandler.cs:19) 登录聊天服务器成功 SnowShow AccountId 116299279127281665 GateRoutedId 2589354375981826048
+2025-04-11 15:39:32.3087 初始化序列化器成功,数量为:2
+2025-04-11 15:39:32.9543 SceneConfigId = 1001 networkTarget = Inner TCPServer Listen 127.0.0.1:11001
+2025-04-11 15:39:33.1675 SceneConfigId = 1001 networkTarget = Outer KCPServer Listen 127.0.0.1:21001
+2025-04-11 15:39:33.1843 (AuthenticationJWTComponentSystem.cs:44) RSA密钥导入成功
+2025-04-11 15:39:33.4019 SceneConfigId = 1002 networkTarget = Inner TCPServer Listen 127.0.0.1:11002
+2025-04-11 15:39:33.5875 SceneConfigId = 1002 networkTarget = Outer KCPServer Listen 127.0.0.1:21002
+2025-04-11 15:39:33.5875 (AuthenticationJWTComponentSystem.cs:44) RSA密钥导入成功
+2025-04-11 15:39:33.7925 SceneConfigId = 1010 networkTarget = Inner TCPServer Listen 127.0.0.1:11010
+2025-04-11 15:39:33.9826 SceneConfigId = 1010 networkTarget = Outer KCPServer Listen 127.0.0.1:21010
+2025-04-11 15:39:34.1892 SceneConfigId = 1011 networkTarget = Inner TCPServer Listen 127.0.0.1:11011
+2025-04-11 15:39:34.3674 SceneConfigId = 1011 networkTarget = Outer KCPServer Listen 127.0.0.1:21011
+2025-04-11 15:39:34.5846 SceneConfigId = 1026 networkTarget = Inner TCPServer Listen 127.0.0.1:11026
+2025-04-11 15:39:34.7982 SceneConfigId = 1026 networkTarget = Outer TCPServer Listen 127.0.0.1:21016
+2025-04-11 15:39:34.7982 Process:1 Startup Complete SceneCount:5
+2025-04-11 15:40:10.1055 (G2Chat_LoginRequestHandler.cs:19) 登录聊天服务器成功 SnowShow AccountId 116299279127281665 GateRoutedId 2589086095144648704
+2025-04-11 15:41:40.5770 初始化序列化器成功,数量为:2
+2025-04-11 15:41:41.2305 SceneConfigId = 1001 networkTarget = Inner TCPServer Listen 127.0.0.1:11001
+2025-04-11 15:41:41.4336 SceneConfigId = 1001 networkTarget = Outer KCPServer Listen 127.0.0.1:21001
+2025-04-11 15:41:41.4501 (AuthenticationJWTComponentSystem.cs:44) RSA密钥导入成功
+2025-04-11 15:41:41.6505 SceneConfigId = 1002 networkTarget = Inner TCPServer Listen 127.0.0.1:11002
+2025-04-11 15:41:41.8346 SceneConfigId = 1002 networkTarget = Outer KCPServer Listen 127.0.0.1:21002
+2025-04-11 15:41:41.8365 (AuthenticationJWTComponentSystem.cs:44) RSA密钥导入成功
+2025-04-11 15:41:42.0469 SceneConfigId = 1010 networkTarget = Inner TCPServer Listen 127.0.0.1:11010
+2025-04-11 15:41:42.2302 SceneConfigId = 1010 networkTarget = Outer KCPServer Listen 127.0.0.1:21010
+2025-04-11 15:41:42.4428 SceneConfigId = 1011 networkTarget = Inner TCPServer Listen 127.0.0.1:11011
+2025-04-11 15:41:42.6253 SceneConfigId = 1011 networkTarget = Outer KCPServer Listen 127.0.0.1:21011
+2025-04-11 15:41:42.8275 SceneConfigId = 1026 networkTarget = Inner TCPServer Listen 127.0.0.1:11026
+2025-04-11 15:41:43.0321 SceneConfigId = 1026 networkTarget = Outer TCPServer Listen 127.0.0.1:21016
+2025-04-11 15:41:43.0321 Process:1 Startup Complete SceneCount:5
+2025-04-11 15:41:50.0085 (G2Chat_LoginRequestHandler.cs:19) 登录聊天服务器成功 SnowShow AccountId 116299279127281665 GateRoutedId 2589022323470237696
+2025-04-11 15:45:16.5837 初始化序列化器成功,数量为:2
+2025-04-11 15:45:17.2601 SceneConfigId = 1001 networkTarget = Inner TCPServer Listen 127.0.0.1:11001
+2025-04-11 15:45:17.4770 SceneConfigId = 1001 networkTarget = Outer KCPServer Listen 127.0.0.1:21001
+2025-04-11 15:45:17.4931 (AuthenticationJWTComponentSystem.cs:44) RSA密钥导入成功
+2025-04-11 15:45:17.6924 SceneConfigId = 1002 networkTarget = Inner TCPServer Listen 127.0.0.1:11002
+2025-04-11 15:45:17.8754 SceneConfigId = 1002 networkTarget = Outer KCPServer Listen 127.0.0.1:21002
+2025-04-11 15:45:17.8754 (AuthenticationJWTComponentSystem.cs:44) RSA密钥导入成功
+2025-04-11 15:45:18.0926 SceneConfigId = 1010 networkTarget = Inner TCPServer Listen 127.0.0.1:11010
+2025-04-11 15:45:18.2764 SceneConfigId = 1010 networkTarget = Outer KCPServer Listen 127.0.0.1:21010
+2025-04-11 15:45:18.4812 SceneConfigId = 1011 networkTarget = Inner TCPServer Listen 127.0.0.1:11011
+2025-04-11 15:45:18.6637 SceneConfigId = 1011 networkTarget = Outer KCPServer Listen 127.0.0.1:21011
+2025-04-11 15:45:18.8768 SceneConfigId = 1026 networkTarget = Inner TCPServer Listen 127.0.0.1:11026
+2025-04-11 15:45:19.0974 SceneConfigId = 1026 networkTarget = Outer TCPServer Listen 127.0.0.1:21016
+2025-04-11 15:45:19.0974 Process:1 Startup Complete SceneCount:5
+2025-04-11 15:46:29.7475 (G2Chat_LoginRequestHandler.cs:19) 登录聊天服务器成功 SnowShow AccountId 116299279127281665 GateRoutedId 2589163060958593024
+2025-04-11 15:49:19.8428 初始化序列化器成功,数量为:2
+2025-04-11 15:49:20.5011 SceneConfigId = 1001 networkTarget = Inner TCPServer Listen 127.0.0.1:11001
+2025-04-11 15:49:20.7102 SceneConfigId = 1001 networkTarget = Outer KCPServer Listen 127.0.0.1:21001
+2025-04-11 15:49:20.7250 (AuthenticationJWTComponentSystem.cs:44) RSA密钥导入成功
+2025-04-11 15:49:20.9195 SceneConfigId = 1002 networkTarget = Inner TCPServer Listen 127.0.0.1:11002
+2025-04-11 15:49:21.1064 SceneConfigId = 1002 networkTarget = Outer KCPServer Listen 127.0.0.1:21002
+2025-04-11 15:49:21.1064 (AuthenticationJWTComponentSystem.cs:44) RSA密钥导入成功
+2025-04-11 15:49:21.3101 SceneConfigId = 1010 networkTarget = Inner TCPServer Listen 127.0.0.1:11010
+2025-04-11 15:49:21.5042 SceneConfigId = 1010 networkTarget = Outer KCPServer Listen 127.0.0.1:21010
+2025-04-11 15:49:21.7144 SceneConfigId = 1011 networkTarget = Inner TCPServer Listen 127.0.0.1:11011
+2025-04-11 15:49:21.8951 SceneConfigId = 1011 networkTarget = Outer KCPServer Listen 127.0.0.1:21011
+2025-04-11 15:49:22.1004 SceneConfigId = 1026 networkTarget = Inner TCPServer Listen 127.0.0.1:11026
+2025-04-11 15:49:22.3014 SceneConfigId = 1026 networkTarget = Outer TCPServer Listen 127.0.0.1:21016
+2025-04-11 15:49:22.3014 Process:1 Startup Complete SceneCount:5
+2025-04-11 15:49:56.5378 (G2Chat_LoginRequestHandler.cs:19) 登录聊天服务器成功 SnowShow AccountId 116299279127281665 GateRoutedId 2589081697098137600
+2025-04-11 15:53:22.2766 初始化序列化器成功,数量为:2
+2025-04-11 15:53:22.9245 SceneConfigId = 1001 networkTarget = Inner TCPServer Listen 127.0.0.1:11001
+2025-04-11 15:53:23.1581 SceneConfigId = 1001 networkTarget = Outer KCPServer Listen 127.0.0.1:21001
+2025-04-11 15:53:23.1796 (AuthenticationJWTComponentSystem.cs:44) RSA密钥导入成功
+2025-04-11 15:53:23.4150 SceneConfigId = 1002 networkTarget = Inner TCPServer Listen 127.0.0.1:11002
+2025-04-11 15:53:23.6034 SceneConfigId = 1002 networkTarget = Outer KCPServer Listen 127.0.0.1:21002
+2025-04-11 15:53:23.6034 (AuthenticationJWTComponentSystem.cs:44) RSA密钥导入成功
+2025-04-11 15:53:23.8366 SceneConfigId = 1010 networkTarget = Inner TCPServer Listen 127.0.0.1:11010
+2025-04-11 15:53:24.0237 SceneConfigId = 1010 networkTarget = Outer KCPServer Listen 127.0.0.1:21010
+2025-04-11 15:53:24.2349 SceneConfigId = 1011 networkTarget = Inner TCPServer Listen 127.0.0.1:11011
+2025-04-11 15:53:24.4187 SceneConfigId = 1011 networkTarget = Outer KCPServer Listen 127.0.0.1:21011
+2025-04-11 15:53:24.6313 SceneConfigId = 1026 networkTarget = Inner TCPServer Listen 127.0.0.1:11026
+2025-04-11 15:53:24.8391 SceneConfigId = 1026 networkTarget = Outer TCPServer Listen 127.0.0.1:21016
+2025-04-11 15:53:24.8391 Process:1 Startup Complete SceneCount:5
+2025-04-11 15:53:35.3603 (G2Chat_LoginRequestHandler.cs:19) 登录聊天服务器成功 SnowShow AccountId 116299279127281665 GateRoutedId 2589031119563259904
+2025-04-11 15:59:01.3151 初始化序列化器成功,数量为:2
+2025-04-11 15:59:01.9274 SceneConfigId = 1001 networkTarget = Inner TCPServer Listen 127.0.0.1:11001
+2025-04-11 15:59:02.1165 SceneConfigId = 1001 networkTarget = Outer KCPServer Listen 127.0.0.1:21001
+2025-04-11 15:59:02.1313 (AuthenticationJWTComponentSystem.cs:44) RSA密钥导入成功
+2025-04-11 15:59:02.3145 SceneConfigId = 1002 networkTarget = Inner TCPServer Listen 127.0.0.1:11002
+2025-04-11 15:59:02.4884 SceneConfigId = 1002 networkTarget = Outer KCPServer Listen 127.0.0.1:21002
+2025-04-11 15:59:02.4884 (AuthenticationJWTComponentSystem.cs:44) RSA密钥导入成功
+2025-04-11 15:59:02.6804 SceneConfigId = 1010 networkTarget = Inner TCPServer Listen 127.0.0.1:11010
+2025-04-11 15:59:02.8598 SceneConfigId = 1010 networkTarget = Outer KCPServer Listen 127.0.0.1:21010
+2025-04-11 15:59:03.0545 SceneConfigId = 1011 networkTarget = Inner TCPServer Listen 127.0.0.1:11011
+2025-04-11 15:59:03.2376 SceneConfigId = 1011 networkTarget = Outer KCPServer Listen 127.0.0.1:21011
+2025-04-11 15:59:03.4464 SceneConfigId = 1026 networkTarget = Inner TCPServer Listen 127.0.0.1:11026
+2025-04-11 15:59:03.6500 SceneConfigId = 1026 networkTarget = Outer TCPServer Listen 127.0.0.1:21016
+2025-04-11 15:59:03.6500 Process:1 Startup Complete SceneCount:5
+2025-04-11 15:59:40.5431 (G2Chat_LoginRequestHandler.cs:19) 登录聊天服务器成功 SnowShow AccountId 116299279127281665 GateRoutedId 2589088294167904256
diff --git a/GameServer/Bin/Debug/Logs/Server/Server20250411/Server..2025041115.Warn.log b/GameServer/Bin/Debug/Logs/Server/Server20250411/Server..2025041115.Warn.log
new file mode 100644
index 00000000..efda794c
--- /dev/null
+++ b/GameServer/Bin/Debug/Logs/Server/Server20250411/Server..2025041115.Warn.log
@@ -0,0 +1,11 @@
+2025-04-11 15:33:50.8787 (GateJWTComponentSystem.cs:47) Gate:Token签名校验成功
+2025-04-11 15:34:30.8472 session timeout id:148901878326099968 timeNow:1744356870847 _session.LastReceiveTime:1744356862804 _timeOut:8000
+2025-04-11 15:36:06.2176 (GateJWTComponentSystem.cs:47) Gate:Token签名校验成功
+2025-04-11 15:36:16.1918 session timeout id:148904214788308992 timeNow:1744356976191 _session.LastReceiveTime:1744356968184 _timeOut:8000
+2025-04-11 15:37:54.7182 (GateJWTComponentSystem.cs:47) Gate:Token签名校验成功
+2025-04-11 15:40:10.0575 (GateJWTComponentSystem.cs:47) Gate:Token签名校验成功
+2025-04-11 15:41:49.9609 (GateJWTComponentSystem.cs:47) Gate:Token签名校验成功
+2025-04-11 15:46:29.7089 (GateJWTComponentSystem.cs:47) Gate:Token签名校验成功
+2025-04-11 15:49:56.4790 (GateJWTComponentSystem.cs:47) Gate:Token签名校验成功
+2025-04-11 15:53:35.3006 (GateJWTComponentSystem.cs:47) Gate:Token签名校验成功
+2025-04-11 15:59:40.4833 (GateJWTComponentSystem.cs:47) Gate:Token签名校验成功
diff --git a/GameServer/Bin/Debug/Logs/Server/Server20250411/Server..2025041116.Debug.log b/GameServer/Bin/Debug/Logs/Server/Server20250411/Server..2025041116.Debug.log
new file mode 100644
index 00000000..9d2a9a19
--- /dev/null
+++ b/GameServer/Bin/Debug/Logs/Server/Server20250411/Server..2025041116.Debug.log
@@ -0,0 +1,63 @@
+2025-04-11 16:02:41.0670 (OnCreateScene_InitEvent.cs:16) 初始化鉴权服务器组件
+2025-04-11 16:02:41.4687 (OnCreateScene_InitEvent.cs:16) 初始化鉴权服务器组件
+2025-04-11 16:02:41.8843 (OnCreateScene_InitEvent.cs:21) 初始网关(Gate)服务器组件
+2025-04-11 16:02:42.2825 (OnCreateScene_InitEvent.cs:21) 初始网关(Gate)服务器组件
+2025-04-11 16:02:47.1598 (AuthenticationComponentSystem.cs:130) Authentication: Login Success(登录成功),username:wangwei,password:123,source:客户端,Position:1001
+2025-04-11 16:02:47.4039 (C2G_LoginRequestHandler.cs:31) Gate校验登录成功用户116299279127281665
+2025-04-11 16:02:47.4331 (GameAccountManageComponentSystem.cs:102) Gate 当前缓存中的 SessionID 2589017925423726592
+2025-04-11 16:02:47.4331 (C2G_LoginRequestHandler.cs:43) Gate : Login 登录成功GameAccount:session2589017925423726592 AccountId:116299279127281665
+2025-04-11 16:02:47.4481 (GateLoginHelper.cs:32) OLine Gate1
+2025-04-11 16:02:47.4741 (G2C_GetGameAccountInfoHandler.cs:37) Gate: 获取账号信息 AccountId SnowShow
+2025-04-11 16:02:49.1849 (C2Chat_BoardRequestMessageHandler.cs:12) Love
+2025-04-11 16:02:49.1849 (ChatHelper.cs:21) 85932900352
+2025-04-11 16:02:53.1615 (AuthenticationComponentSystem.cs:150) Authentication:Login:username:wangwei 用户移除成功 从缓存中
+2025-04-11 16:06:55.1604 (OnCreateScene_InitEvent.cs:16) 初始化鉴权服务器组件
+2025-04-11 16:06:55.5580 (OnCreateScene_InitEvent.cs:16) 初始化鉴权服务器组件
+2025-04-11 16:06:55.9862 (OnCreateScene_InitEvent.cs:21) 初始网关(Gate)服务器组件
+2025-04-11 16:06:56.3952 (OnCreateScene_InitEvent.cs:21) 初始网关(Gate)服务器组件
+2025-04-11 16:07:05.2280 (AuthenticationComponentSystem.cs:130) Authentication: Login Success(登录成功),username:wangwei,password:123,source:客户端,Position:1001
+2025-04-11 16:07:05.4977 (C2G_LoginRequestHandler.cs:31) Gate校验登录成功用户116299279127281665
+2025-04-11 16:07:05.5249 (GameAccountManageComponentSystem.cs:102) Gate 当前缓存中的 SessionID 2589026721516748800
+2025-04-11 16:07:05.5249 (C2G_LoginRequestHandler.cs:43) Gate : Login 登录成功GameAccount:session2589026721516748800 AccountId:116299279127281665
+2025-04-11 16:07:05.5626 (GateLoginHelper.cs:32) OLine Gate1
+2025-04-11 16:07:05.6048 (G2C_GetGameAccountInfoHandler.cs:37) Gate: 获取账号信息 AccountId SnowShow
+2025-04-11 16:07:11.2339 (AuthenticationComponentSystem.cs:150) Authentication:Login:username:wangwei 用户移除成功 从缓存中
+2025-04-11 16:07:12.0761 (C2Chat_BoardRequestMessageHandler.cs:12) Love
+2025-04-11 16:07:12.0761 (ChatHelper.cs:21) 85932900352
+2025-04-11 16:07:12.0761 (ChatHelper.cs:21) 94522834944
+2025-04-11 16:10:44.9181 (OnCreateScene_InitEvent.cs:16) 初始化鉴权服务器组件
+2025-04-11 16:10:45.3008 (OnCreateScene_InitEvent.cs:16) 初始化鉴权服务器组件
+2025-04-11 16:10:45.6843 (OnCreateScene_InitEvent.cs:21) 初始网关(Gate)服务器组件
+2025-04-11 16:10:46.0383 (OnCreateScene_InitEvent.cs:21) 初始网关(Gate)服务器组件
+2025-04-11 16:11:13.0428 (AuthenticationComponentSystem.cs:130) Authentication: Login Success(登录成功),username:wangwei,password:123,source:客户端,Position:1001
+2025-04-11 16:11:13.3245 (C2G_LoginRequestHandler.cs:31) Gate校验登录成功用户116299279127281665
+2025-04-11 16:11:13.3523 (GameAccountManageComponentSystem.cs:102) Gate 当前缓存中的 SessionID 2589066303935348736
+2025-04-11 16:11:13.3523 (C2G_LoginRequestHandler.cs:43) Gate : Login 登录成功GameAccount:session2589066303935348736 AccountId:116299279127281665
+2025-04-11 16:11:13.3879 (GateLoginHelper.cs:32) OLine Gate1
+2025-04-11 16:11:13.4158 (G2C_GetGameAccountInfoHandler.cs:37) Gate: 获取账号信息 AccountId SnowShow
+2025-04-11 16:11:17.5050 (C2Chat_BoardRequestMessageHandler.cs:12) Love
+2025-04-11 16:11:17.5050 (ChatHelper.cs:21) 85932900352
+2025-04-11 16:11:17.5050 (ChatHelper.cs:21) 94522834944
+2025-04-11 16:11:19.0489 (AuthenticationComponentSystem.cs:150) Authentication:Login:username:wangwei 用户移除成功 从缓存中
+2025-04-11 16:11:57.2160 (OnCreateScene_InitEvent.cs:16) 初始化鉴权服务器组件
+2025-04-11 16:11:57.6031 (OnCreateScene_InitEvent.cs:16) 初始化鉴权服务器组件
+2025-04-11 16:11:57.9995 (OnCreateScene_InitEvent.cs:21) 初始网关(Gate)服务器组件
+2025-04-11 16:11:58.4045 (OnCreateScene_InitEvent.cs:21) 初始网关(Gate)服务器组件
+2025-04-11 16:12:04.1304 (AuthenticationComponentSystem.cs:130) Authentication: Login Success(登录成功),username:wangwei,password:123,source:客户端,Position:1001
+2025-04-11 16:12:04.3868 (C2G_LoginRequestHandler.cs:31) Gate校验登录成功用户116299279127281665
+2025-04-11 16:12:04.4148 (GameAccountManageComponentSystem.cs:102) Gate 当前缓存中的 SessionID 2589020124446982144
+2025-04-11 16:12:04.4148 (C2G_LoginRequestHandler.cs:43) Gate : Login 登录成功GameAccount:session2589020124446982144 AccountId:116299279127281665
+2025-04-11 16:12:04.4510 (GateLoginHelper.cs:32) OLine Gate1
+2025-04-11 16:12:04.4775 (G2C_GetGameAccountInfoHandler.cs:37) Gate: 获取账号信息 AccountId SnowShow
+2025-04-11 16:12:06.6886 (C2Chat_BoardRequestMessageHandler.cs:12) Love
+2025-04-11 16:12:06.6886 (ChatHelper.cs:21) 85932900352
+2025-04-11 16:12:06.6886 (ChatHelper.cs:21) 94522834944
+2025-04-11 16:12:06.7062 (Chat2G_BoardMessageHandler.cs:19) 0
+2025-04-11 16:12:06.7062 (Chat2G_BoardMessageHandler.cs:19) 1
+2025-04-11 16:12:06.7062 (Chat2G_BoardMessageHandler.cs:23) 2589020124446982144
+2025-04-11 16:12:10.1328 (AuthenticationComponentSystem.cs:150) Authentication:Login:username:wangwei 用户移除成功 从缓存中
+2025-04-11 16:12:49.3738 (GameAccountSystem.cs:29) Gate gameAccount 下线前 保存数据到 数据库中
+2025-04-11 16:12:49.4467 (G2Chat_OfflineRequestHandler.cs:11) chat : 聊天服务器SnowShow 下线
+2025-04-11 16:12:49.4467 (GateLoginHelper.cs:45) Gate : chat聊天服务器下线成功
+2025-04-11 16:12:49.4467 (GameAccountSystem.cs:29) Gate gameAccount 下线前 保存数据到 数据库中
+2025-04-11 16:12:49.4467 (EntityTimeOutComponentSystem.cs:52) session : 0 Dispose
diff --git a/GameServer/Bin/Debug/Logs/Server/Server20250411/Server..2025041116.Error.log b/GameServer/Bin/Debug/Logs/Server/Server20250411/Server..2025041116.Error.log
new file mode 100644
index 00000000..439d3350
--- /dev/null
+++ b/GameServer/Bin/Debug/Logs/Server/Server20250411/Server..2025041116.Error.log
@@ -0,0 +1,23 @@
+2025-04-11 16:03:19.1870 coroutine lock timeout CoroutineLockQueueType:140718960002680 Key:2589018054272745472 Tag:
+ at Fantasy.Async.OnCoroutineLockTimeout.Handler(CoroutineLockTimeout self)
+ at Fantasy.Event.EventSystem`1.Invoke(Object self)
+ at Fantasy.Event.EventComponent.Publish[TEventData](TEventData eventData)
+ at Fantasy.Timer.TimerSchedulerNet.<>c__DisplayClass18_0`1.g__OnceTimerVoid|0()
+ at Fantasy.Timer.TimerSchedulerNet.Update()
+ at Fantasy.Entitas.EntityComponent.Update()
+ at Fantasy.Scene.Update()
+ at Fantasy.MultiThreadScheduler.Loop(Scene scene, CancellationToken cancellationToken)
+ at Fantasy.MultiThreadScheduler.<>c__DisplayClass5_0.b__0()
+
+2025-04-11 16:03:31.8883 Unsupported protocol type:Fantasy.C2Chat_BoardMessageRequest rpcId:2
+ at Fantasy.Scheduler.NetworkMessagingComponent.ReturnMessageSender(UInt32 rpcId, MessageSender messageSender)
+ at Fantasy.Scheduler.OnNetworkMessageUpdateCheckTimeout.Handler(NetworkMessageUpdate self)
+ at Fantasy.Event.EventSystem`1.Invoke(Object self)
+ at Fantasy.Event.EventComponent.Publish[TEventData](TEventData eventData)
+ at Fantasy.Timer.TimerSchedulerNet.<>c__DisplayClass22_0`1.g__RepeatedTimerVoid|0()
+ at Fantasy.Timer.TimerSchedulerNet.Update()
+ at Fantasy.Entitas.EntityComponent.Update()
+ at Fantasy.Scene.Update()
+ at Fantasy.MultiThreadScheduler.Loop(Scene scene, CancellationToken cancellationToken)
+ at Fantasy.MultiThreadScheduler.<>c__DisplayClass5_0.b__0()
+
diff --git a/GameServer/Bin/Debug/Logs/Server/Server20250411/Server..2025041116.Info.log b/GameServer/Bin/Debug/Logs/Server/Server20250411/Server..2025041116.Info.log
new file mode 100644
index 00000000..f8d612c2
--- /dev/null
+++ b/GameServer/Bin/Debug/Logs/Server/Server20250411/Server..2025041116.Info.log
@@ -0,0 +1,60 @@
+2025-04-11 16:02:40.1433 初始化序列化器成功,数量为:2
+2025-04-11 16:02:40.8448 SceneConfigId = 1001 networkTarget = Inner TCPServer Listen 127.0.0.1:11001
+2025-04-11 16:02:41.0507 SceneConfigId = 1001 networkTarget = Outer KCPServer Listen 127.0.0.1:21001
+2025-04-11 16:02:41.0670 (AuthenticationJWTComponentSystem.cs:44) RSA密钥导入成功
+2025-04-11 16:02:41.2757 SceneConfigId = 1002 networkTarget = Inner TCPServer Listen 127.0.0.1:11002
+2025-04-11 16:02:41.4687 SceneConfigId = 1002 networkTarget = Outer KCPServer Listen 127.0.0.1:21002
+2025-04-11 16:02:41.4687 (AuthenticationJWTComponentSystem.cs:44) RSA密钥导入成功
+2025-04-11 16:02:41.6862 SceneConfigId = 1010 networkTarget = Inner TCPServer Listen 127.0.0.1:11010
+2025-04-11 16:02:41.8815 SceneConfigId = 1010 networkTarget = Outer KCPServer Listen 127.0.0.1:21010
+2025-04-11 16:02:42.1015 SceneConfigId = 1011 networkTarget = Inner TCPServer Listen 127.0.0.1:11011
+2025-04-11 16:02:42.2825 SceneConfigId = 1011 networkTarget = Outer KCPServer Listen 127.0.0.1:21011
+2025-04-11 16:02:42.4984 SceneConfigId = 1026 networkTarget = Inner TCPServer Listen 127.0.0.1:11026
+2025-04-11 16:02:42.6990 SceneConfigId = 1026 networkTarget = Outer TCPServer Listen 127.0.0.1:21016
+2025-04-11 16:02:42.6990 Process:1 Startup Complete SceneCount:5
+2025-04-11 16:02:47.4481 (G2Chat_LoginRequestHandler.cs:19) 登录聊天服务器成功 SnowShow AccountId 116299279127281665 GateRoutedId 2589017925423726592
+2025-04-11 16:06:54.2808 初始化序列化器成功,数量为:2
+2025-04-11 16:06:54.9424 SceneConfigId = 1001 networkTarget = Inner TCPServer Listen 127.0.0.1:11001
+2025-04-11 16:06:55.1438 SceneConfigId = 1001 networkTarget = Outer KCPServer Listen 127.0.0.1:21001
+2025-04-11 16:06:55.1604 (AuthenticationJWTComponentSystem.cs:44) RSA密钥导入成功
+2025-04-11 16:06:55.3643 SceneConfigId = 1002 networkTarget = Inner TCPServer Listen 127.0.0.1:11002
+2025-04-11 16:06:55.5580 SceneConfigId = 1002 networkTarget = Outer KCPServer Listen 127.0.0.1:21002
+2025-04-11 16:06:55.5580 (AuthenticationJWTComponentSystem.cs:44) RSA密钥导入成功
+2025-04-11 16:06:55.7960 SceneConfigId = 1010 networkTarget = Inner TCPServer Listen 127.0.0.1:11010
+2025-04-11 16:06:55.9862 SceneConfigId = 1010 networkTarget = Outer KCPServer Listen 127.0.0.1:21010
+2025-04-11 16:06:56.2088 SceneConfigId = 1011 networkTarget = Inner TCPServer Listen 127.0.0.1:11011
+2025-04-11 16:06:56.3952 SceneConfigId = 1011 networkTarget = Outer KCPServer Listen 127.0.0.1:21011
+2025-04-11 16:06:56.6150 SceneConfigId = 1026 networkTarget = Inner TCPServer Listen 127.0.0.1:11026
+2025-04-11 16:06:56.8238 SceneConfigId = 1026 networkTarget = Outer TCPServer Listen 127.0.0.1:21016
+2025-04-11 16:06:56.8238 Process:1 Startup Complete SceneCount:5
+2025-04-11 16:07:05.5436 (G2Chat_LoginRequestHandler.cs:19) 登录聊天服务器成功 SnowShow AccountId 116299279127281665 GateRoutedId 2589026721516748800
+2025-04-11 16:10:44.1046 初始化序列化器成功,数量为:2
+2025-04-11 16:10:44.7048 SceneConfigId = 1001 networkTarget = Inner TCPServer Listen 127.0.0.1:11001
+2025-04-11 16:10:44.9032 SceneConfigId = 1001 networkTarget = Outer KCPServer Listen 127.0.0.1:21001
+2025-04-11 16:10:44.9181 (AuthenticationJWTComponentSystem.cs:44) RSA密钥导入成功
+2025-04-11 16:10:45.1210 SceneConfigId = 1002 networkTarget = Inner TCPServer Listen 127.0.0.1:11002
+2025-04-11 16:10:45.3008 SceneConfigId = 1002 networkTarget = Outer KCPServer Listen 127.0.0.1:21002
+2025-04-11 16:10:45.3008 (AuthenticationJWTComponentSystem.cs:44) RSA密钥导入成功
+2025-04-11 16:10:45.5018 SceneConfigId = 1010 networkTarget = Inner TCPServer Listen 127.0.0.1:11010
+2025-04-11 16:10:45.6843 SceneConfigId = 1010 networkTarget = Outer KCPServer Listen 127.0.0.1:21010
+2025-04-11 16:10:45.8691 SceneConfigId = 1011 networkTarget = Inner TCPServer Listen 127.0.0.1:11011
+2025-04-11 16:10:46.0377 SceneConfigId = 1011 networkTarget = Outer KCPServer Listen 127.0.0.1:21011
+2025-04-11 16:10:46.2357 SceneConfigId = 1026 networkTarget = Inner TCPServer Listen 127.0.0.1:11026
+2025-04-11 16:10:46.4180 SceneConfigId = 1026 networkTarget = Outer TCPServer Listen 127.0.0.1:21016
+2025-04-11 16:10:46.4180 Process:1 Startup Complete SceneCount:5
+2025-04-11 16:11:13.3704 (G2Chat_LoginRequestHandler.cs:19) 登录聊天服务器成功 SnowShow AccountId 116299279127281665 GateRoutedId 2589066303935348736
+2025-04-11 16:11:56.3548 初始化序列化器成功,数量为:2
+2025-04-11 16:11:56.9930 SceneConfigId = 1001 networkTarget = Inner TCPServer Listen 127.0.0.1:11001
+2025-04-11 16:11:57.1998 SceneConfigId = 1001 networkTarget = Outer KCPServer Listen 127.0.0.1:21001
+2025-04-11 16:11:57.2160 (AuthenticationJWTComponentSystem.cs:44) RSA密钥导入成功
+2025-04-11 16:11:57.4152 SceneConfigId = 1002 networkTarget = Inner TCPServer Listen 127.0.0.1:11002
+2025-04-11 16:11:57.6011 SceneConfigId = 1002 networkTarget = Outer KCPServer Listen 127.0.0.1:21002
+2025-04-11 16:11:57.6031 (AuthenticationJWTComponentSystem.cs:44) RSA密钥导入成功
+2025-04-11 16:11:57.8165 SceneConfigId = 1010 networkTarget = Inner TCPServer Listen 127.0.0.1:11010
+2025-04-11 16:11:57.9995 SceneConfigId = 1010 networkTarget = Outer KCPServer Listen 127.0.0.1:21010
+2025-04-11 16:11:58.2086 SceneConfigId = 1011 networkTarget = Inner TCPServer Listen 127.0.0.1:11011
+2025-04-11 16:11:58.4045 SceneConfigId = 1011 networkTarget = Outer KCPServer Listen 127.0.0.1:21011
+2025-04-11 16:11:58.6185 SceneConfigId = 1026 networkTarget = Inner TCPServer Listen 127.0.0.1:11026
+2025-04-11 16:11:58.8222 SceneConfigId = 1026 networkTarget = Outer TCPServer Listen 127.0.0.1:21016
+2025-04-11 16:11:58.8222 Process:1 Startup Complete SceneCount:5
+2025-04-11 16:12:04.4311 (G2Chat_LoginRequestHandler.cs:19) 登录聊天服务器成功 SnowShow AccountId 116299279127281665 GateRoutedId 2589020124446982144
diff --git a/GameServer/Bin/Debug/Logs/Server/Server20250411/Server..2025041116.Warn.log b/GameServer/Bin/Debug/Logs/Server/Server20250411/Server..2025041116.Warn.log
new file mode 100644
index 00000000..bcbd5eb3
--- /dev/null
+++ b/GameServer/Bin/Debug/Logs/Server/Server20250411/Server..2025041116.Warn.log
@@ -0,0 +1,5 @@
+2025-04-11 16:02:47.4039 (GateJWTComponentSystem.cs:47) Gate:Token签名校验成功
+2025-04-11 16:07:05.4977 (GateJWTComponentSystem.cs:47) Gate:Token签名校验成功
+2025-04-11 16:11:13.3245 (GateJWTComponentSystem.cs:47) Gate:Token签名校验成功
+2025-04-11 16:12:04.3868 (GateJWTComponentSystem.cs:47) Gate:Token签名校验成功
+2025-04-11 16:12:39.3690 session timeout id:148941288946008064 timeNow:1744359159368 _session.LastReceiveTime:1744359146383 _timeOut:8000
diff --git a/GameServer/Bin/Debug/net9.0/APlugins.dll b/GameServer/Bin/Debug/net9.0/APlugins.dll
new file mode 100644
index 00000000..ed581911
Binary files /dev/null and b/GameServer/Bin/Debug/net9.0/APlugins.dll differ
diff --git a/GameServer/Bin/Debug/net9.0/APlugins.pdb b/GameServer/Bin/Debug/net9.0/APlugins.pdb
new file mode 100644
index 00000000..7e866004
Binary files /dev/null and b/GameServer/Bin/Debug/net9.0/APlugins.pdb differ
diff --git a/GameServer/Bin/Debug/net9.0/CommandLine.dll b/GameServer/Bin/Debug/net9.0/CommandLine.dll
new file mode 100644
index 00000000..3eab2be2
Binary files /dev/null and b/GameServer/Bin/Debug/net9.0/CommandLine.dll differ
diff --git a/GameServer/Bin/Debug/net9.0/DnsClient.dll b/GameServer/Bin/Debug/net9.0/DnsClient.dll
new file mode 100644
index 00000000..39aa546a
Binary files /dev/null and b/GameServer/Bin/Debug/net9.0/DnsClient.dll differ
diff --git a/GameServer/Bin/Debug/net9.0/Entity.dll b/GameServer/Bin/Debug/net9.0/Entity.dll
new file mode 100644
index 00000000..bc3b8c64
Binary files /dev/null and b/GameServer/Bin/Debug/net9.0/Entity.dll differ
diff --git a/GameServer/Bin/Debug/net9.0/Entity.pdb b/GameServer/Bin/Debug/net9.0/Entity.pdb
new file mode 100644
index 00000000..af19b177
Binary files /dev/null and b/GameServer/Bin/Debug/net9.0/Entity.pdb differ
diff --git a/GameServer/Bin/Debug/net9.0/Fantasy-Net.Config.dll b/GameServer/Bin/Debug/net9.0/Fantasy-Net.Config.dll
new file mode 100644
index 00000000..7642a225
Binary files /dev/null and b/GameServer/Bin/Debug/net9.0/Fantasy-Net.Config.dll differ
diff --git a/GameServer/Bin/Debug/net9.0/Fantasy-Net.ConfigTable.dll b/GameServer/Bin/Debug/net9.0/Fantasy-Net.ConfigTable.dll
new file mode 100644
index 00000000..8996ebc6
Binary files /dev/null and b/GameServer/Bin/Debug/net9.0/Fantasy-Net.ConfigTable.dll differ
diff --git a/GameServer/Bin/Debug/net9.0/Fantasy-Net.NLog.dll b/GameServer/Bin/Debug/net9.0/Fantasy-Net.NLog.dll
new file mode 100644
index 00000000..7ffbcb54
Binary files /dev/null and b/GameServer/Bin/Debug/net9.0/Fantasy-Net.NLog.dll differ
diff --git a/GameServer/Bin/Debug/net9.0/Fantasy-Net.dll b/GameServer/Bin/Debug/net9.0/Fantasy-Net.dll
new file mode 100644
index 00000000..41e585d5
Binary files /dev/null and b/GameServer/Bin/Debug/net9.0/Fantasy-Net.dll differ
diff --git a/GameServer/Bin/Debug/net9.0/Fantasy.Tools.ExporterConfigTable.dll b/GameServer/Bin/Debug/net9.0/Fantasy.Tools.ExporterConfigTable.dll
new file mode 100644
index 00000000..cabb7662
Binary files /dev/null and b/GameServer/Bin/Debug/net9.0/Fantasy.Tools.ExporterConfigTable.dll differ
diff --git a/GameServer/Bin/Debug/net9.0/Fantasy.Tools.ExporterNetworkProtocol.dll b/GameServer/Bin/Debug/net9.0/Fantasy.Tools.ExporterNetworkProtocol.dll
new file mode 100644
index 00000000..22e11f8c
Binary files /dev/null and b/GameServer/Bin/Debug/net9.0/Fantasy.Tools.ExporterNetworkProtocol.dll differ
diff --git a/GameServer/Bin/Debug/net9.0/Hotfix.dll b/GameServer/Bin/Debug/net9.0/Hotfix.dll
new file mode 100644
index 00000000..a9b53977
Binary files /dev/null and b/GameServer/Bin/Debug/net9.0/Hotfix.dll differ
diff --git a/GameServer/Bin/Debug/net9.0/Hotfix.pdb b/GameServer/Bin/Debug/net9.0/Hotfix.pdb
new file mode 100644
index 00000000..6cacedb2
Binary files /dev/null and b/GameServer/Bin/Debug/net9.0/Hotfix.pdb differ
diff --git a/GameServer/Bin/Debug/net9.0/Main.deps.json b/GameServer/Bin/Debug/net9.0/Main.deps.json
new file mode 100644
index 00000000..85b6e4d9
--- /dev/null
+++ b/GameServer/Bin/Debug/net9.0/Main.deps.json
@@ -0,0 +1,578 @@
+{
+ "runtimeTarget": {
+ "name": ".NETCoreApp,Version=v9.0",
+ "signature": ""
+ },
+ "compilationOptions": {},
+ "targets": {
+ ".NETCoreApp,Version=v9.0": {
+ "Main/1.0.0": {
+ "dependencies": {
+ "APlugins": "1.0.0",
+ "Entity": "1.0.0",
+ "Fantasy-Net.NLog": "2024.1.20",
+ "Hotfix": "1.0.0"
+ },
+ "runtime": {
+ "Main.dll": {}
+ }
+ },
+ "CommandLineParser/2.9.1": {
+ "runtime": {
+ "lib/netstandard2.0/CommandLine.dll": {
+ "assemblyVersion": "2.9.1.0",
+ "fileVersion": "2.9.1.0"
+ }
+ }
+ },
+ "DnsClient/1.6.1": {
+ "dependencies": {
+ "Microsoft.Win32.Registry": "5.0.0"
+ },
+ "runtime": {
+ "lib/net5.0/DnsClient.dll": {
+ "assemblyVersion": "1.6.1.0",
+ "fileVersion": "1.6.1.0"
+ }
+ }
+ },
+ "Fantasy-Net/2024.2.24": {
+ "dependencies": {
+ "CommandLineParser": "2.9.1",
+ "MongoDB.Bson": "3.1.0",
+ "MongoDB.Driver": "3.1.0",
+ "Newtonsoft.Json": "13.0.3",
+ "protobuf-net": "3.2.45"
+ },
+ "runtime": {
+ "lib/net9.0/Fantasy-Net.dll": {
+ "assemblyVersion": "1.0.0.0",
+ "fileVersion": "1.0.0.0"
+ }
+ }
+ },
+ "Fantasy-Net.Config/2024.1.4": {
+ "runtime": {
+ "lib/net8.0/Fantasy-Net.Config.dll": {
+ "assemblyVersion": "1.0.0.0",
+ "fileVersion": "1.0.0.0"
+ }
+ }
+ },
+ "Fantasy-Net.ConfigTable/2024.2.0": {
+ "dependencies": {
+ "Fantasy-Net": "2024.2.24"
+ },
+ "runtime": {
+ "lib/net8.0/Fantasy-Net.ConfigTable.dll": {
+ "assemblyVersion": "1.0.0.0",
+ "fileVersion": "1.0.0.0"
+ }
+ }
+ },
+ "Fantasy-Net.NLog/2024.1.20": {
+ "dependencies": {
+ "Fantasy-Net": "2024.2.24",
+ "NLog": "5.3.4"
+ },
+ "runtime": {
+ "lib/net8.0/Fantasy-Net.NLog.dll": {
+ "assemblyVersion": "1.0.0.0",
+ "fileVersion": "1.0.0.0"
+ }
+ }
+ },
+ "Fantasy-Net.Tools.ExporterConfigTable/2024.2.0": {
+ "runtime": {
+ "lib/net8.0/Fantasy.Tools.ExporterConfigTable.dll": {
+ "assemblyVersion": "1.0.0.0",
+ "fileVersion": "1.0.0.0"
+ }
+ }
+ },
+ "Fantasy-Net.Tools.ExporterNetworkProtocol/2024.2.24": {
+ "runtime": {
+ "lib/net8.0/Fantasy.Tools.ExporterNetworkProtocol.dll": {
+ "assemblyVersion": "1.0.0.0",
+ "fileVersion": "1.0.0.0"
+ }
+ }
+ },
+ "Microsoft.Extensions.DependencyInjection.Abstractions/8.0.2": {},
+ "Microsoft.Extensions.Logging.Abstractions/8.0.2": {
+ "dependencies": {
+ "Microsoft.Extensions.DependencyInjection.Abstractions": "8.0.2"
+ }
+ },
+ "Microsoft.IdentityModel.Abstractions/8.7.0": {
+ "runtime": {
+ "lib/net9.0/Microsoft.IdentityModel.Abstractions.dll": {
+ "assemblyVersion": "8.7.0.0",
+ "fileVersion": "8.7.0.60321"
+ }
+ }
+ },
+ "Microsoft.IdentityModel.JsonWebTokens/8.7.0": {
+ "dependencies": {
+ "Microsoft.IdentityModel.Tokens": "8.7.0"
+ },
+ "runtime": {
+ "lib/net9.0/Microsoft.IdentityModel.JsonWebTokens.dll": {
+ "assemblyVersion": "8.7.0.0",
+ "fileVersion": "8.7.0.60321"
+ }
+ }
+ },
+ "Microsoft.IdentityModel.Logging/8.7.0": {
+ "dependencies": {
+ "Microsoft.IdentityModel.Abstractions": "8.7.0"
+ },
+ "runtime": {
+ "lib/net9.0/Microsoft.IdentityModel.Logging.dll": {
+ "assemblyVersion": "8.7.0.0",
+ "fileVersion": "8.7.0.60321"
+ }
+ }
+ },
+ "Microsoft.IdentityModel.Tokens/8.7.0": {
+ "dependencies": {
+ "Microsoft.Extensions.Logging.Abstractions": "8.0.2",
+ "Microsoft.IdentityModel.Logging": "8.7.0"
+ },
+ "runtime": {
+ "lib/net9.0/Microsoft.IdentityModel.Tokens.dll": {
+ "assemblyVersion": "8.7.0.0",
+ "fileVersion": "8.7.0.60321"
+ }
+ }
+ },
+ "Microsoft.NETCore.Platforms/5.0.0": {},
+ "Microsoft.Win32.Registry/5.0.0": {
+ "dependencies": {
+ "System.Security.AccessControl": "5.0.0",
+ "System.Security.Principal.Windows": "5.0.0"
+ }
+ },
+ "MongoDB.Bson/3.1.0": {
+ "dependencies": {
+ "System.Memory": "4.5.5",
+ "System.Runtime.CompilerServices.Unsafe": "5.0.0"
+ },
+ "runtime": {
+ "lib/net6.0/MongoDB.Bson.dll": {
+ "assemblyVersion": "3.1.0.0",
+ "fileVersion": "3.1.0.0"
+ }
+ }
+ },
+ "MongoDB.Driver/3.1.0": {
+ "dependencies": {
+ "DnsClient": "1.6.1",
+ "Microsoft.Extensions.Logging.Abstractions": "8.0.2",
+ "MongoDB.Bson": "3.1.0",
+ "SharpCompress": "0.30.1",
+ "Snappier": "1.0.0",
+ "System.Buffers": "4.5.1",
+ "ZstdSharp.Port": "0.7.3"
+ },
+ "runtime": {
+ "lib/net6.0/MongoDB.Driver.dll": {
+ "assemblyVersion": "3.1.0.0",
+ "fileVersion": "3.1.0.0"
+ }
+ }
+ },
+ "Newtonsoft.Json/13.0.3": {
+ "runtime": {
+ "lib/net6.0/Newtonsoft.Json.dll": {
+ "assemblyVersion": "13.0.0.0",
+ "fileVersion": "13.0.3.27908"
+ }
+ }
+ },
+ "NLog/5.3.4": {
+ "runtime": {
+ "lib/netstandard2.0/NLog.dll": {
+ "assemblyVersion": "5.0.0.0",
+ "fileVersion": "5.3.4.2778"
+ }
+ }
+ },
+ "protobuf-net/3.2.45": {
+ "dependencies": {
+ "protobuf-net.Core": "3.2.45"
+ },
+ "runtime": {
+ "lib/net6.0/protobuf-net.dll": {
+ "assemblyVersion": "3.0.0.0",
+ "fileVersion": "3.2.45.36865"
+ }
+ }
+ },
+ "protobuf-net.Core/3.2.45": {
+ "dependencies": {
+ "System.Collections.Immutable": "7.0.0"
+ },
+ "runtime": {
+ "lib/net6.0/protobuf-net.Core.dll": {
+ "assemblyVersion": "3.0.0.0",
+ "fileVersion": "3.2.45.36865"
+ }
+ }
+ },
+ "SharpCompress/0.30.1": {
+ "runtime": {
+ "lib/net5.0/SharpCompress.dll": {
+ "assemblyVersion": "0.30.1.0",
+ "fileVersion": "0.30.1.0"
+ }
+ }
+ },
+ "Snappier/1.0.0": {
+ "runtime": {
+ "lib/net5.0/Snappier.dll": {
+ "assemblyVersion": "1.0.0.0",
+ "fileVersion": "1.0.0.0"
+ }
+ }
+ },
+ "System.Buffers/4.5.1": {},
+ "System.Collections.Immutable/7.0.0": {},
+ "System.Formats.Asn1/5.0.0": {},
+ "System.IdentityModel.Tokens.Jwt/8.7.0": {
+ "dependencies": {
+ "Microsoft.IdentityModel.JsonWebTokens": "8.7.0",
+ "Microsoft.IdentityModel.Tokens": "8.7.0"
+ },
+ "runtime": {
+ "lib/net9.0/System.IdentityModel.Tokens.Jwt.dll": {
+ "assemblyVersion": "8.7.0.0",
+ "fileVersion": "8.7.0.60321"
+ }
+ }
+ },
+ "System.Memory/4.5.5": {},
+ "System.Runtime.CompilerServices.Unsafe/5.0.0": {},
+ "System.Security.AccessControl/5.0.0": {
+ "dependencies": {
+ "Microsoft.NETCore.Platforms": "5.0.0",
+ "System.Security.Principal.Windows": "5.0.0"
+ }
+ },
+ "System.Security.Cryptography.Cng/5.0.0": {
+ "dependencies": {
+ "System.Formats.Asn1": "5.0.0"
+ }
+ },
+ "System.Security.Principal.Windows/5.0.0": {},
+ "ZstdSharp.Port/0.7.3": {
+ "runtime": {
+ "lib/net7.0/ZstdSharp.dll": {
+ "assemblyVersion": "0.7.3.0",
+ "fileVersion": "0.7.3.0"
+ }
+ }
+ },
+ "APlugins/1.0.0": {
+ "dependencies": {
+ "Fantasy-Net.Config": "2024.1.4",
+ "Fantasy-Net.ConfigTable": "2024.2.0",
+ "Fantasy-Net.Tools.ExporterConfigTable": "2024.2.0",
+ "Fantasy-Net.Tools.ExporterNetworkProtocol": "2024.2.24",
+ "Microsoft.IdentityModel.Tokens": "8.7.0"
+ },
+ "runtime": {
+ "APlugins.dll": {
+ "assemblyVersion": "1.0.0.0",
+ "fileVersion": "1.0.0.0"
+ }
+ }
+ },
+ "Entity/1.0.0": {
+ "dependencies": {
+ "APlugins": "1.0.0",
+ "Fantasy-Net": "2024.2.24",
+ "System.IdentityModel.Tokens.Jwt": "8.7.0",
+ "System.Security.Cryptography.Cng": "5.0.0"
+ },
+ "runtime": {
+ "Entity.dll": {
+ "assemblyVersion": "1.0.0.0",
+ "fileVersion": "1.0.0.0"
+ }
+ }
+ },
+ "Hotfix/1.0.0": {
+ "dependencies": {
+ "Entity": "1.0.0"
+ },
+ "runtime": {
+ "Hotfix.dll": {
+ "assemblyVersion": "1.0.0.0",
+ "fileVersion": "1.0.0.0"
+ }
+ }
+ }
+ }
+ },
+ "libraries": {
+ "Main/1.0.0": {
+ "type": "project",
+ "serviceable": false,
+ "sha512": ""
+ },
+ "CommandLineParser/2.9.1": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-OE0sl1/sQ37bjVsPKKtwQlWDgqaxWgtme3xZz7JssWUzg5JpMIyHgCTY9MVMxOg48fJ1AgGT3tgdH5m/kQ5xhA==",
+ "path": "commandlineparser/2.9.1",
+ "hashPath": "commandlineparser.2.9.1.nupkg.sha512"
+ },
+ "DnsClient/1.6.1": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-4H/f2uYJOZ+YObZjpY9ABrKZI+JNw3uizp6oMzTXwDw6F+2qIPhpRl/1t68O/6e98+vqNiYGu+lswmwdYUy3gg==",
+ "path": "dnsclient/1.6.1",
+ "hashPath": "dnsclient.1.6.1.nupkg.sha512"
+ },
+ "Fantasy-Net/2024.2.24": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-5u460iiB29NDwxIBV25WzuxUxW5fV0i8DJ2OE47fSJW1lWq+AP/LJ4KYqcH6zngyDFMOMOjh2S6hT3IZ/r4dwA==",
+ "path": "fantasy-net/2024.2.24",
+ "hashPath": "fantasy-net.2024.2.24.nupkg.sha512"
+ },
+ "Fantasy-Net.Config/2024.1.4": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-zStTIJq91mx3VjCcU7eAtrExAcv1Zg+dAd8UdDvpHu7kTY8ldDQMp8sCmez2s+vUTmNyH1hlOgEE3rJILAijfQ==",
+ "path": "fantasy-net.config/2024.1.4",
+ "hashPath": "fantasy-net.config.2024.1.4.nupkg.sha512"
+ },
+ "Fantasy-Net.ConfigTable/2024.2.0": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-TIpd7Cz5eTx5WlI0QPA/gLkTCNWW4DHFXG5ZXgLjkxgxC4AYpXzvktaU/merldPuccaebc7ld8oVxJ0fejKHEg==",
+ "path": "fantasy-net.configtable/2024.2.0",
+ "hashPath": "fantasy-net.configtable.2024.2.0.nupkg.sha512"
+ },
+ "Fantasy-Net.NLog/2024.1.20": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-HJuHfecWrD7tcQYEZezJzgayvG5leAbdWlgvo9ft/CUuwTtAB+tkeKP3e3VtbkCoPaAZO4VAUN0Y30Ute2/vrQ==",
+ "path": "fantasy-net.nlog/2024.1.20",
+ "hashPath": "fantasy-net.nlog.2024.1.20.nupkg.sha512"
+ },
+ "Fantasy-Net.Tools.ExporterConfigTable/2024.2.0": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-jPL8qd+9WTsOAOhXVkAOHuwjoyFTGIg6Zr/zsSP+OB4G6sNklcHI0KDnMYWN0EW01fSycl/g1DyRyyDdwZ2iPQ==",
+ "path": "fantasy-net.tools.exporterconfigtable/2024.2.0",
+ "hashPath": "fantasy-net.tools.exporterconfigtable.2024.2.0.nupkg.sha512"
+ },
+ "Fantasy-Net.Tools.ExporterNetworkProtocol/2024.2.24": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-gKbHZBgiTuERq4LCgctChvpYJGVoUbGNHoXq9x7Yz7aUoU7/M6DjuGdZE7XnsyNioddz1Gh992900RUAPwSpjQ==",
+ "path": "fantasy-net.tools.exporternetworkprotocol/2024.2.24",
+ "hashPath": "fantasy-net.tools.exporternetworkprotocol.2024.2.24.nupkg.sha512"
+ },
+ "Microsoft.Extensions.DependencyInjection.Abstractions/8.0.2": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-3iE7UF7MQkCv1cxzCahz+Y/guQbTqieyxyaWKhrRO91itI9cOKO76OHeQDahqG4MmW5umr3CcCvGmK92lWNlbg==",
+ "path": "microsoft.extensions.dependencyinjection.abstractions/8.0.2",
+ "hashPath": "microsoft.extensions.dependencyinjection.abstractions.8.0.2.nupkg.sha512"
+ },
+ "Microsoft.Extensions.Logging.Abstractions/8.0.2": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-nroMDjS7hNBPtkZqVBbSiQaQjWRDxITI8Y7XnDs97rqG3EbzVTNLZQf7bIeUJcaHOV8bca47s1Uxq94+2oGdxA==",
+ "path": "microsoft.extensions.logging.abstractions/8.0.2",
+ "hashPath": "microsoft.extensions.logging.abstractions.8.0.2.nupkg.sha512"
+ },
+ "Microsoft.IdentityModel.Abstractions/8.7.0": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-OQd5aVepYvh5evOmBMeAYjMIpEcTf1ZCBZaU7Nh/RlhhdXefjFDJeP1L2F2zeNT1unFr+wUu/h3Ac2Xb4BXU6w==",
+ "path": "microsoft.identitymodel.abstractions/8.7.0",
+ "hashPath": "microsoft.identitymodel.abstractions.8.7.0.nupkg.sha512"
+ },
+ "Microsoft.IdentityModel.JsonWebTokens/8.7.0": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-uzsSAWhNhbrkWbQKBTE8QhzviU6sr3bJ1Bkv7gERlhswfSKOp7HsxTRLTPBpx/whQ/GRRHEwMg8leRIPbMrOgw==",
+ "path": "microsoft.identitymodel.jsonwebtokens/8.7.0",
+ "hashPath": "microsoft.identitymodel.jsonwebtokens.8.7.0.nupkg.sha512"
+ },
+ "Microsoft.IdentityModel.Logging/8.7.0": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-Bs0TznPAu+nxa9rAVHJ+j3CYECHJkT3tG8AyBfhFYlT5ldsDhoxFT7J+PKxJHLf+ayqWfvDZHHc4639W2FQCxA==",
+ "path": "microsoft.identitymodel.logging/8.7.0",
+ "hashPath": "microsoft.identitymodel.logging.8.7.0.nupkg.sha512"
+ },
+ "Microsoft.IdentityModel.Tokens/8.7.0": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-5Z6voXjRXAnGklhmZd1mKz89UhcF5ZQQZaZc2iKrOuL4Li1UihG2vlJx8IbiFAOIxy/xdbsAm0A+WZEaH5fxng==",
+ "path": "microsoft.identitymodel.tokens/8.7.0",
+ "hashPath": "microsoft.identitymodel.tokens.8.7.0.nupkg.sha512"
+ },
+ "Microsoft.NETCore.Platforms/5.0.0": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-VyPlqzH2wavqquTcYpkIIAQ6WdenuKoFN0BdYBbCWsclXacSOHNQn66Gt4z5NBqEYW0FAPm5rlvki9ZiCij5xQ==",
+ "path": "microsoft.netcore.platforms/5.0.0",
+ "hashPath": "microsoft.netcore.platforms.5.0.0.nupkg.sha512"
+ },
+ "Microsoft.Win32.Registry/5.0.0": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-dDoKi0PnDz31yAyETfRntsLArTlVAVzUzCIvvEDsDsucrl33Dl8pIJG06ePTJTI3tGpeyHS9Cq7Foc/s4EeKcg==",
+ "path": "microsoft.win32.registry/5.0.0",
+ "hashPath": "microsoft.win32.registry.5.0.0.nupkg.sha512"
+ },
+ "MongoDB.Bson/3.1.0": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-3dhaZhz18B5vUoEP13o2j8A6zQfkHdZhwBvLZEjDJum4BTLLv1/Z8bt25UQEtpqvYwLgde4R6ekWZ7XAYUMxuw==",
+ "path": "mongodb.bson/3.1.0",
+ "hashPath": "mongodb.bson.3.1.0.nupkg.sha512"
+ },
+ "MongoDB.Driver/3.1.0": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-+O7lKaIl7VUHptE0hqTd7UY1G5KDp/o8S4upG7YL4uChMNKD/U6tz9i17nMGHaD/L2AiPLgaJcaDe2XACsegGA==",
+ "path": "mongodb.driver/3.1.0",
+ "hashPath": "mongodb.driver.3.1.0.nupkg.sha512"
+ },
+ "Newtonsoft.Json/13.0.3": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-HrC5BXdl00IP9zeV+0Z848QWPAoCr9P3bDEZguI+gkLcBKAOxix/tLEAAHC+UvDNPv4a2d18lOReHMOagPa+zQ==",
+ "path": "newtonsoft.json/13.0.3",
+ "hashPath": "newtonsoft.json.13.0.3.nupkg.sha512"
+ },
+ "NLog/5.3.4": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-gLy7+O1hEYJXIlcTr1/VWjGXrZTQFZzYNO18IWasD64pNwz0BreV+nHLxWKXWZzERRzoKnsk2XYtwLkTVk7J1A==",
+ "path": "nlog/5.3.4",
+ "hashPath": "nlog.5.3.4.nupkg.sha512"
+ },
+ "protobuf-net/3.2.45": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-5UZ/ukUHcGbFSl7vNMrHsfjqdxusdd9w7w0fCEXzf3UUtsrGNVCzV5SmF+sCHAbnRV2qPcD1ixiDP7Aj8lX/HA==",
+ "path": "protobuf-net/3.2.45",
+ "hashPath": "protobuf-net.3.2.45.nupkg.sha512"
+ },
+ "protobuf-net.Core/3.2.45": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-PMWatW2NrT1uTXD7etJ4VdQ0wWZLFrIfdRGppD2QX7nzZ0+kIzqhq551u6ZiXJHWJgG4hWFEkSnUnt2aB6posg==",
+ "path": "protobuf-net.core/3.2.45",
+ "hashPath": "protobuf-net.core.3.2.45.nupkg.sha512"
+ },
+ "SharpCompress/0.30.1": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-XqD4TpfyYGa7QTPzaGlMVbcecKnXy4YmYLDWrU+JIj7IuRNl7DH2END+Ll7ekWIY8o3dAMWLFDE1xdhfIWD1nw==",
+ "path": "sharpcompress/0.30.1",
+ "hashPath": "sharpcompress.0.30.1.nupkg.sha512"
+ },
+ "Snappier/1.0.0": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-rFtK2KEI9hIe8gtx3a0YDXdHOpedIf9wYCEYtBEmtlyiWVX3XlCNV03JrmmAi/Cdfn7dxK+k0sjjcLv4fpHnqA==",
+ "path": "snappier/1.0.0",
+ "hashPath": "snappier.1.0.0.nupkg.sha512"
+ },
+ "System.Buffers/4.5.1": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-Rw7ijyl1qqRS0YQD/WycNst8hUUMgrMH4FCn1nNm27M4VxchZ1js3fVjQaANHO5f3sN4isvP4a+Met9Y4YomAg==",
+ "path": "system.buffers/4.5.1",
+ "hashPath": "system.buffers.4.5.1.nupkg.sha512"
+ },
+ "System.Collections.Immutable/7.0.0": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-dQPcs0U1IKnBdRDBkrCTi1FoajSTBzLcVTpjO4MBCMC7f4pDOIPzgBoX8JjG7X6uZRJ8EBxsi8+DR1JuwjnzOQ==",
+ "path": "system.collections.immutable/7.0.0",
+ "hashPath": "system.collections.immutable.7.0.0.nupkg.sha512"
+ },
+ "System.Formats.Asn1/5.0.0": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-MTvUIktmemNB+El0Fgw9egyqT9AYSIk6DTJeoDSpc3GIHxHCMo8COqkWT1mptX5tZ1SlQ6HJZ0OsSvMth1c12w==",
+ "path": "system.formats.asn1/5.0.0",
+ "hashPath": "system.formats.asn1.5.0.0.nupkg.sha512"
+ },
+ "System.IdentityModel.Tokens.Jwt/8.7.0": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-8dKL3A9pVqYCJIXHd4H2epQqLxSvKeNxGonR0e5g89yMchyvsM/NLuB06otx29BicUd6+LUJZgNZmvYjjPsPGg==",
+ "path": "system.identitymodel.tokens.jwt/8.7.0",
+ "hashPath": "system.identitymodel.tokens.jwt.8.7.0.nupkg.sha512"
+ },
+ "System.Memory/4.5.5": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-XIWiDvKPXaTveaB7HVganDlOCRoj03l+jrwNvcge/t8vhGYKvqV+dMv6G4SAX2NoNmN0wZfVPTAlFwZcZvVOUw==",
+ "path": "system.memory/4.5.5",
+ "hashPath": "system.memory.4.5.5.nupkg.sha512"
+ },
+ "System.Runtime.CompilerServices.Unsafe/5.0.0": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-ZD9TMpsmYJLrxbbmdvhwt9YEgG5WntEnZ/d1eH8JBX9LBp+Ju8BSBhUGbZMNVHHomWo2KVImJhTDl2hIgw/6MA==",
+ "path": "system.runtime.compilerservices.unsafe/5.0.0",
+ "hashPath": "system.runtime.compilerservices.unsafe.5.0.0.nupkg.sha512"
+ },
+ "System.Security.AccessControl/5.0.0": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-dagJ1mHZO3Ani8GH0PHpPEe/oYO+rVdbQjvjJkBRNQkX4t0r1iaeGn8+/ybkSLEan3/slM0t59SVdHzuHf2jmw==",
+ "path": "system.security.accesscontrol/5.0.0",
+ "hashPath": "system.security.accesscontrol.5.0.0.nupkg.sha512"
+ },
+ "System.Security.Cryptography.Cng/5.0.0": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-jIMXsKn94T9JY7PvPq/tMfqa6GAaHpElRDpmG+SuL+D3+sTw2M8VhnibKnN8Tq+4JqbPJ/f+BwtLeDMEnzAvRg==",
+ "path": "system.security.cryptography.cng/5.0.0",
+ "hashPath": "system.security.cryptography.cng.5.0.0.nupkg.sha512"
+ },
+ "System.Security.Principal.Windows/5.0.0": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-t0MGLukB5WAVU9bO3MGzvlGnyJPgUlcwerXn1kzBRjwLKixT96XV0Uza41W49gVd8zEMFu9vQEFlv0IOrytICA==",
+ "path": "system.security.principal.windows/5.0.0",
+ "hashPath": "system.security.principal.windows.5.0.0.nupkg.sha512"
+ },
+ "ZstdSharp.Port/0.7.3": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-U9Ix4l4cl58Kzz1rJzj5hoVTjmbx1qGMwzAcbv1j/d3NzrFaESIurQyg+ow4mivCgkE3S413y+U9k4WdnEIkRA==",
+ "path": "zstdsharp.port/0.7.3",
+ "hashPath": "zstdsharp.port.0.7.3.nupkg.sha512"
+ },
+ "APlugins/1.0.0": {
+ "type": "project",
+ "serviceable": false,
+ "sha512": ""
+ },
+ "Entity/1.0.0": {
+ "type": "project",
+ "serviceable": false,
+ "sha512": ""
+ },
+ "Hotfix/1.0.0": {
+ "type": "project",
+ "serviceable": false,
+ "sha512": ""
+ }
+ }
+}
\ No newline at end of file
diff --git a/GameServer/Bin/Debug/net9.0/Main.dll b/GameServer/Bin/Debug/net9.0/Main.dll
new file mode 100644
index 00000000..f5df5de0
Binary files /dev/null and b/GameServer/Bin/Debug/net9.0/Main.dll differ
diff --git a/GameServer/Bin/Debug/net9.0/Main.exe b/GameServer/Bin/Debug/net9.0/Main.exe
new file mode 100644
index 00000000..9f7efb20
Binary files /dev/null and b/GameServer/Bin/Debug/net9.0/Main.exe differ
diff --git a/GameServer/Bin/Debug/net9.0/Main.pdb b/GameServer/Bin/Debug/net9.0/Main.pdb
new file mode 100644
index 00000000..504f5178
Binary files /dev/null and b/GameServer/Bin/Debug/net9.0/Main.pdb differ
diff --git a/GameServer/Bin/Debug/net9.0/Main.runtimeconfig.json b/GameServer/Bin/Debug/net9.0/Main.runtimeconfig.json
new file mode 100644
index 00000000..27e402f0
--- /dev/null
+++ b/GameServer/Bin/Debug/net9.0/Main.runtimeconfig.json
@@ -0,0 +1,18 @@
+{
+ "runtimeOptions": {
+ "tfm": "net9.0",
+ "frameworks": [
+ {
+ "name": "Microsoft.NETCore.App",
+ "version": "9.0.0"
+ },
+ {
+ "name": "Microsoft.AspNetCore.App",
+ "version": "9.0.0"
+ }
+ ],
+ "configProperties": {
+ "System.Runtime.Serialization.EnableUnsafeBinaryFormatterSerialization": false
+ }
+ }
+}
\ No newline at end of file
diff --git a/GameServer/Bin/Debug/net9.0/Microsoft.IdentityModel.Abstractions.dll b/GameServer/Bin/Debug/net9.0/Microsoft.IdentityModel.Abstractions.dll
new file mode 100644
index 00000000..3e6ca08b
Binary files /dev/null and b/GameServer/Bin/Debug/net9.0/Microsoft.IdentityModel.Abstractions.dll differ
diff --git a/GameServer/Bin/Debug/net9.0/Microsoft.IdentityModel.JsonWebTokens.dll b/GameServer/Bin/Debug/net9.0/Microsoft.IdentityModel.JsonWebTokens.dll
new file mode 100644
index 00000000..9d7eaebb
Binary files /dev/null and b/GameServer/Bin/Debug/net9.0/Microsoft.IdentityModel.JsonWebTokens.dll differ
diff --git a/GameServer/Bin/Debug/net9.0/Microsoft.IdentityModel.Logging.dll b/GameServer/Bin/Debug/net9.0/Microsoft.IdentityModel.Logging.dll
new file mode 100644
index 00000000..dbae0fd7
Binary files /dev/null and b/GameServer/Bin/Debug/net9.0/Microsoft.IdentityModel.Logging.dll differ
diff --git a/GameServer/Bin/Debug/net9.0/Microsoft.IdentityModel.Tokens.dll b/GameServer/Bin/Debug/net9.0/Microsoft.IdentityModel.Tokens.dll
new file mode 100644
index 00000000..d959e7a4
Binary files /dev/null and b/GameServer/Bin/Debug/net9.0/Microsoft.IdentityModel.Tokens.dll differ
diff --git a/GameServer/Bin/Debug/net9.0/MongoDB.Bson.dll b/GameServer/Bin/Debug/net9.0/MongoDB.Bson.dll
new file mode 100644
index 00000000..c604c81a
Binary files /dev/null and b/GameServer/Bin/Debug/net9.0/MongoDB.Bson.dll differ
diff --git a/GameServer/Bin/Debug/net9.0/MongoDB.Driver.dll b/GameServer/Bin/Debug/net9.0/MongoDB.Driver.dll
new file mode 100644
index 00000000..1308944b
Binary files /dev/null and b/GameServer/Bin/Debug/net9.0/MongoDB.Driver.dll differ
diff --git a/GameServer/Bin/Debug/net9.0/NLog.config b/GameServer/Bin/Debug/net9.0/NLog.config
new file mode 100644
index 00000000..4df5ea1b
--- /dev/null
+++ b/GameServer/Bin/Debug/net9.0/NLog.config
@@ -0,0 +1,91 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/GameServer/Bin/Debug/net9.0/NLog.dll b/GameServer/Bin/Debug/net9.0/NLog.dll
new file mode 100644
index 00000000..49604e19
Binary files /dev/null and b/GameServer/Bin/Debug/net9.0/NLog.dll differ
diff --git a/GameServer/Bin/Debug/net9.0/NLog.xsd b/GameServer/Bin/Debug/net9.0/NLog.xsd
new file mode 100644
index 00000000..63c9a0cc
--- /dev/null
+++ b/GameServer/Bin/Debug/net9.0/NLog.xsd
@@ -0,0 +1,3483 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Watch config file for changes and reload automatically.
+
+
+
+
+ Print internal NLog messages to the console. Default value is: false
+
+
+
+
+ Print internal NLog messages to the console error output. Default value is: false
+
+
+
+
+ Write internal NLog messages to the specified file.
+
+
+
+
+ Log level threshold for internal log messages. Default value is: Info.
+
+
+
+
+ Global log level threshold for application log messages. Messages below this level won't be logged.
+
+
+
+
+ Throw an exception when there is an internal error. Default value is: false. Not recommend to set to true in production!
+
+
+
+
+ Throw an exception when there is a configuration error. If not set, determined by throwExceptions.
+
+
+
+
+ Gets or sets a value indicating whether Variables should be kept on configuration reload. Default value is: false.
+
+
+
+
+ Write internal NLog messages to the System.Diagnostics.Trace. Default value is: false.
+
+
+
+
+ Write timestamps for internal NLog messages. Default value is: true.
+
+
+
+
+ Use InvariantCulture as default culture instead of CurrentCulture. Default value is: false.
+
+
+
+
+ Perform message template parsing and formatting of LogEvent messages (true = Always, false = Never, empty = Auto Detect). Default value is: empty.
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Make all targets within this section asynchronous (creates additional threads but the calling thread isn't blocked by any target writes).
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Prefix for targets/layout renderers/filters/conditions loaded from this assembly.
+
+
+
+
+ Load NLog extensions from the specified file (*.dll)
+
+
+
+
+ Load NLog extensions from the specified assembly. Assembly name should be fully qualified.
+
+
+
+
+
+
+
+
+
+ Filter on the name of the logger. May include wildcard characters ('*' or '?').
+
+
+
+
+ Comma separated list of levels that this rule matches.
+
+
+
+
+ Minimum level that this rule matches.
+
+
+
+
+ Maximum level that this rule matches.
+
+
+
+
+ Level that this rule matches.
+
+
+
+
+ Comma separated list of target names.
+
+
+
+
+ Ignore further rules if this one matches.
+
+
+
+
+ Enable this rule. Note: disabled rules aren't available from the API.
+
+
+
+
+ Rule identifier to allow rule lookup with Configuration.FindRuleByName and Configuration.RemoveRuleByName.
+
+
+
+
+ Loggers matching will be restricted to specified minimum level for following rules.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Default action if none of the filters match.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Name of the file to be included. You could use * wildcard. The name is relative to the name of the current config file.
+
+
+
+
+ Ignore any errors in the include file.
+
+
+
+
+
+
+
+ Variable value. Note, the 'value' attribute has precedence over this one.
+
+
+
+
+
+ Variable name.
+
+
+
+
+ Variable value.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Name of the target.
+
+
+
+
+ Action to be taken when the lazy writer thread request queue count exceeds the set limit.
+
+
+
+
+ Limit on the number of requests in the lazy writer thread request queue.
+
+
+
+
+ Number of log events that should be processed in a batch by the lazy writer thread.
+
+
+
+
+ Whether to use the locking queue, instead of a lock-free concurrent queue
+
+
+
+
+ Number of batches of P:NLog.Targets.Wrappers.AsyncTargetWrapper.BatchSize to write before yielding into P:NLog.Targets.Wrappers.AsyncTargetWrapper.TimeToSleepBetweenBatches
+
+
+
+
+ Time in milliseconds to sleep between batches. (1 or less means trigger on new activity)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Name of the target.
+
+
+
+
+ Delay the flush until the LogEvent has been confirmed as written
+
+
+
+
+ Condition expression. Log events who meet this condition will cause a flush on the wrapped target.
+
+
+
+
+ Only flush when LogEvent matches condition. Ignore explicit-flush, config-reload-flush and shutdown-flush
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Name of the target.
+
+
+
+
+ Number of log events to be buffered.
+
+
+
+
+ Action to take if the buffer overflows.
+
+
+
+
+ Timeout (in milliseconds) after which the contents of buffer will be flushed if there's no write in the specified period of time. Use -1 to disable timed flushes.
+
+
+
+
+ Indicates whether to use sliding timeout.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Name of the target.
+
+
+
+
+ Separator for T:NLog.ScopeContext operation-states-stack.
+
+
+
+
+ Stack separator for log4j:NDC in output from T:NLog.ScopeContext nested context.
+
+
+
+
+ Renderer for log4j:event logger-xml-attribute (Default ${logger})
+
+
+
+
+ Whether to include the contents of the T:NLog.ScopeContext properties-dictionary.
+
+
+
+
+ Whether to include log4j:NDC in output from T:NLog.ScopeContext nested context.
+
+
+
+
+ Indicates whether to include source info (file name and line number) in the information sent over the network.
+
+
+
+
+ Whether to include log4j:NDC in output from T:NLog.ScopeContext nested context.
+
+
+
+
+ Option to include all properties from the log events
+
+
+
+
+ Indicates whether to include call site (class and method name) in the information sent over the network.
+
+
+
+
+ AppInfo field. By default it's the friendly name of the current AppDomain.
+
+
+
+
+ Instance of T:NLog.Layouts.Log4JXmlEventLayout that is used to format log messages.
+
+
+
+
+ Indicates whether to include NLog-specific extensions to log4j schema.
+
+
+
+
+ Action that should be taken, when more connections than P:NLog.Targets.NetworkTarget.MaxConnections.
+
+
+
+
+ SSL/TLS protocols. Default no SSL/TLS is used. Currently only implemented for TCP.
+
+
+
+
+ Action that should be taken, when more pending messages than P:NLog.Targets.NetworkTarget.MaxQueueSize.
+
+
+
+
+ Action that should be taken if the message is larger than P:NLog.Targets.NetworkTarget.MaxMessageSize
+
+
+
+
+ Maximum queue size for a single connection. Requires P:NLog.Targets.NetworkTarget.KeepConnection = true
+
+
+
+
+ Network address.
+
+
+
+
+ Indicates whether to keep connection open whenever possible.
+
+
+
+
+ The number of seconds a connection will remain idle before the first keep-alive probe is sent
+
+
+
+
+ Size of the connection cache (number of connections which are kept alive). Requires P:NLog.Targets.NetworkTarget.KeepConnection = true
+
+
+
+
+ Maximum simultaneous connections. Requires P:NLog.Targets.NetworkTarget.KeepConnection = false
+
+
+
+
+ Type of compression for protocol payload. Useful for UDP where datagram max-size is 8192 bytes.
+
+
+
+
+ Skip compression when protocol payload is below limit to reduce overhead in cpu-usage and additional headers
+
+
+
+
+ Maximum message size in bytes. On limit breach then P:NLog.Targets.NetworkTarget.OnOverflow action is activated.
+
+
+
+
+ Encoding to be used.
+
+
+
+
+ End of line value if a newline is appended at the end of log message P:NLog.Targets.NetworkTarget.NewLine.
+
+
+
+
+ Indicates whether to append newline at the end of log message.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Viewer parameter name.
+
+
+
+
+ Layout that should be use to calculate the value for the parameter.
+
+
+
+
+ Whether an attribute with empty value should be included in the output
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Name of the target.
+
+
+
+
+ Text to be rendered.
+
+
+
+
+ Header.
+
+
+
+
+ Footer.
+
+
+
+
+ Indicates whether to auto-check if the console is available. - Disables console writing if Environment.UserInteractive = False (Windows Service) - Disables console writing if Console Standard Input is not available (Non-Console-App)
+
+
+
+
+ Enables output using ANSI Color Codes
+
+
+
+
+ The encoding for writing messages to the T:System.Console.
+
+
+
+
+ Indicates whether to send the log messages to the standard error instead of the standard output.
+
+
+
+
+ Indicates whether to auto-flush after M:System.Console.WriteLine
+
+
+
+
+ Indicates whether to auto-check if the console has been redirected to file - Disables coloring logic when System.Console.IsOutputRedirected = true
+
+
+
+
+ Indicates whether to use default row highlighting rules.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Background color.
+
+
+
+
+ Condition that must be met in order to set the specified foreground and background color.
+
+
+
+
+ Foreground color.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Background color.
+
+
+
+
+ Compile the P:NLog.Targets.ConsoleWordHighlightingRule.Regex? This can improve the performance, but at the costs of more memory usage. If false, the Regex Cache is used.
+
+
+
+
+ Condition that must be met before scanning the row for highlight of words
+
+
+
+
+ Foreground color.
+
+
+
+
+ Indicates whether to ignore case when comparing texts.
+
+
+
+
+ Regular expression to be matched. You must specify either text or regex.
+
+
+
+
+ Text to be matched. You must specify either text or regex.
+
+
+
+
+ Indicates whether to match whole words only.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Name of the target.
+
+
+
+
+ Text to be rendered.
+
+
+
+
+ Header.
+
+
+
+
+ Footer.
+
+
+
+
+ Indicates whether to auto-flush after M:System.Console.WriteLine
+
+
+
+
+ Indicates whether to auto-check if the console is available - Disables console writing if Environment.UserInteractive = False (Windows Service) - Disables console writing if Console Standard Input is not available (Non-Console-App)
+
+
+
+
+ The encoding for writing messages to the T:System.Console.
+
+
+
+
+ Indicates whether to send the log messages to the standard error instead of the standard output.
+
+
+
+
+ Whether to activate internal buffering to allow batch writing, instead of using M:System.Console.WriteLine
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Name of the target.
+
+
+
+
+ Database user name. If the ConnectionString is not provided this value will be used to construct the "User ID=" part of the connection string.
+
+
+
+
+ Database password. If the ConnectionString is not provided this value will be used to construct the "Password=" part of the connection string.
+
+
+
+
+ Database name. If the ConnectionString is not provided this value will be used to construct the "Database=" part of the connection string.
+
+
+
+
+ Name of the connection string (as specified in <connectionStrings> configuration section.
+
+
+
+
+ Database host name. If the ConnectionString is not provided this value will be used to construct the "Server=" part of the connection string.
+
+
+
+
+ Indicates whether to keep the database connection open between the log events.
+
+
+
+
+ Name of the database provider.
+
+
+
+
+ Connection string. When provided, it overrides the values specified in DBHost, DBUserName, DBPassword, DBDatabase.
+
+
+
+
+ Connection string using for installation and uninstallation. If not provided, regular ConnectionString is being used.
+
+
+
+
+ Configures isolated transaction batch writing. If supported by the database, then it will improve insert performance.
+
+
+
+
+ Text of the SQL command to be run on each log level.
+
+
+
+
+ Type of the SQL command to be run on each log level.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Convert format of the property value
+
+
+
+
+ Culture used for parsing property string-value for type-conversion
+
+
+
+
+ Value to assign on the object-property
+
+
+
+
+ Name for the object-property
+
+
+
+
+ Type of the object-property
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Type of the command.
+
+
+
+
+ Connection string to run the command against. If not provided, connection string from the target is used.
+
+
+
+
+ Indicates whether to ignore failures.
+
+
+
+
+ Command text.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Database parameter name.
+
+
+
+
+ Layout that should be use to calculate the value for the parameter.
+
+
+
+
+ Database parameter DbType.
+
+
+
+
+ Database parameter size.
+
+
+
+
+ Database parameter precision.
+
+
+
+
+ Database parameter scale.
+
+
+
+
+ Type of the parameter.
+
+
+
+
+ Fallback value when result value is not available
+
+
+
+
+ Convert format of the database parameter value.
+
+
+
+
+ Culture used for parsing parameter string-value for type-conversion
+
+
+
+
+ Whether empty value should translate into DbNull. Requires database column to allow NULL values.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Name of the target.
+
+
+
+
+ Text to be rendered.
+
+
+
+
+ Header.
+
+
+
+
+ Footer.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Name of the target.
+
+
+
+
+ Text to be rendered.
+
+
+
+
+ Header.
+
+
+
+
+ Footer.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Name of the target.
+
+
+
+
+ Layout used to format log messages.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Name of the target.
+
+
+
+
+ Layout used to format log messages.
+
+
+
+
+ Layout that renders event Category.
+
+
+
+
+ Optional entry type. When not set, or when not convertible to T:System.Diagnostics.EventLogEntryType then determined by T:NLog.LogLevel
+
+
+
+
+ Layout that renders event ID.
+
+
+
+
+ Name of the Event Log to write to. This can be System, Application or any user-defined name.
+
+
+
+
+ Name of the machine on which Event Log service is running.
+
+
+
+
+ Maximum Event log size in kilobytes.
+
+
+
+
+ Message length limit to write to the Event Log.
+
+
+
+
+ Value to be used as the event Source.
+
+
+
+
+ Action to take if the message is larger than the P:NLog.Targets.EventLogTarget.MaxMessageLength option.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Name of the target.
+
+
+
+
+ Indicates whether to return to the first target after any successful write.
+
+
+
+
+ Whether to enable batching, but fallback will be handled individually
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Name of the target.
+
+
+
+
+ Name of the file to write to.
+
+
+
+
+ Text to be rendered.
+
+
+
+
+ Header.
+
+
+
+
+ Footer.
+
+
+
+
+ Indicates whether the footer should be written only when the file is archived.
+
+
+
+
+ Maximum number of archive files that should be kept.
+
+
+
+
+ Maximum days of archive files that should be kept.
+
+
+
+
+ Value of the file size threshold to archive old log file on startup.
+
+
+
+
+ Indicates whether to archive old log file on startup.
+
+
+
+
+ Indicates whether to compress archive files into the zip archive format.
+
+
+
+
+ Name of the file to be used for an archive.
+
+
+
+
+ Is the P:NLog.Targets.FileTarget.ArchiveFileName an absolute or relative path?
+
+
+
+
+ Indicates whether to automatically archive log files every time the specified time passes.
+
+
+
+
+ Value specifying the date format to use when archiving files.
+
+
+
+
+ Size in bytes above which log files will be automatically archived.
+
+
+
+
+ Way file archives are numbered.
+
+
+
+
+ Indicates whether to create directories if they do not exist.
+
+
+
+
+ Indicates whether file creation calls should be synchronized by a system global mutex.
+
+
+
+
+ Gets or set a value indicating whether a managed file stream is forced, instead of using the native implementation.
+
+
+
+
+ Is the P:NLog.Targets.FileTarget.FileName an absolute or relative path?
+
+
+
+
+ File attributes (Windows only).
+
+
+
+
+ Cleanup invalid values in a filename, e.g. slashes in a filename. If set to true, this can impact the performance of massive writes. If set to false, nothing gets written when the filename is wrong.
+
+
+
+
+ Indicates whether to write BOM (byte order mark) in created files. Defaults to true for UTF-16 and UTF-32
+
+
+
+
+ Indicates whether to enable log file(s) to be deleted.
+
+
+
+
+ Indicates whether to delete old log file on startup.
+
+
+
+
+ File encoding.
+
+
+
+
+ Indicates whether to replace file contents on each write instead of appending log message at the end.
+
+
+
+
+ Line ending mode.
+
+
+
+
+ Number of times the write is appended on the file before NLog discards the log message.
+
+
+
+
+ Delay in milliseconds to wait before attempting to write to the file again.
+
+
+
+
+ Maximum number of seconds before open files are flushed. Zero or negative means disabled.
+
+
+
+
+ Maximum number of seconds that files are kept open. Zero or negative means disabled.
+
+
+
+
+ Indicates whether concurrent writes to the log file by multiple processes on different network hosts.
+
+
+
+
+ Log file buffer size in bytes.
+
+
+
+
+ Indicates whether to automatically flush the file buffers after each log message.
+
+
+
+
+ Indicates whether to keep log file open instead of opening and closing it on each logging event.
+
+
+
+
+ Indicates whether concurrent writes to the log file by multiple processes on the same host.
+
+
+
+
+ Whether or not this target should just discard all data that its asked to write. Mostly used for when testing NLog Stack except final write
+
+
+
+
+ Number of files to be kept open. Setting this to a higher value may improve performance in a situation where a single File target is writing to many files (such as splitting by level or by logger).
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Name of the target.
+
+
+
+
+ Condition expression. Log events who meet this condition will be forwarded to the wrapped target.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Name of the target.
+
+
+
+
+ Identifier to perform group-by
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Name of the target.
+
+
+
+
+ Windows domain name to change context to.
+
+
+
+
+ Required impersonation level.
+
+
+
+
+ Type of the logon provider.
+
+
+
+
+ Logon Type.
+
+
+
+
+ User account password.
+
+
+
+
+ Indicates whether to revert to the credentials of the process instead of impersonating another user.
+
+
+
+
+ Username to change context to.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Name of the target.
+
+
+
+
+ Interval in which messages will be written up to the P:NLog.Targets.Wrappers.LimitingTargetWrapper.MessageLimit number of messages.
+
+
+
+
+ Maximum allowed number of messages written per P:NLog.Targets.Wrappers.LimitingTargetWrapper.Interval.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Name of the target.
+
+
+
+
+ Text to be rendered.
+
+
+
+
+ Header.
+
+
+
+
+ Footer.
+
+
+
+
+ Indicates whether NewLine characters in the body should be replaced with tags.
+
+
+
+
+ Priority used for sending mails.
+
+
+
+
+ Encoding to be used for sending e-mail.
+
+
+
+
+ BCC email addresses separated by semicolons (e.g. john@domain.com;jane@domain.com).
+
+
+
+
+ CC email addresses separated by semicolons (e.g. john@domain.com;jane@domain.com).
+
+
+
+
+ Indicates whether to add new lines between log entries.
+
+
+
+
+ Indicates whether to send message as HTML instead of plain text.
+
+
+
+
+ Sender's email address (e.g. joe@domain.com).
+
+
+
+
+ Mail message body (repeated for each log message send in one mail).
+
+
+
+
+ Mail subject.
+
+
+
+
+ Recipients' email addresses separated by semicolons (e.g. john@domain.com;jane@domain.com).
+
+
+
+
+ Specifies how outgoing email messages will be handled.
+
+
+
+
+ SMTP Server to be used for sending.
+
+
+
+
+ SMTP Authentication mode.
+
+
+
+
+ Username used to connect to SMTP server (used when SmtpAuthentication is set to "basic").
+
+
+
+
+ Password used to authenticate against SMTP server (used when SmtpAuthentication is set to "basic").
+
+
+
+
+ Indicates whether SSL (secure sockets layer) should be used when communicating with SMTP server.
+
+
+
+
+ Port number that SMTP Server is listening on.
+
+
+
+
+ Indicates whether the default Settings from System.Net.MailSettings should be used.
+
+
+
+
+ Folder where applications save mail messages to be processed by the local SMTP server.
+
+
+
+
+ Indicates the SMTP client timeout.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Name of the target.
+
+
+
+
+ Text to be rendered.
+
+
+
+
+ Header.
+
+
+
+
+ Footer.
+
+
+
+
+ Max number of items to have in memory
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Name of the target.
+
+
+
+
+ Class name.
+
+
+
+
+ Method name. The method must be public and static. Use the AssemblyQualifiedName , https://msdn.microsoft.com/en-us/library/system.type.assemblyqualifiedname(v=vs.110).aspx e.g.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Name of the parameter.
+
+
+
+
+ Layout that should be use to calculate the value for the parameter.
+
+
+
+
+ Fallback value when result value is not available
+
+
+
+
+ Type of the parameter.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Name of the target.
+
+
+
+
+ Layout used to format log messages.
+
+
+
+
+ SSL/TLS protocols. Default no SSL/TLS is used. Currently only implemented for TCP.
+
+
+
+
+ Action that should be taken, when more pending messages than P:NLog.Targets.NetworkTarget.MaxQueueSize.
+
+
+
+
+ Action that should be taken if the message is larger than P:NLog.Targets.NetworkTarget.MaxMessageSize
+
+
+
+
+ Maximum queue size for a single connection. Requires P:NLog.Targets.NetworkTarget.KeepConnection = true
+
+
+
+
+ Action that should be taken, when more connections than P:NLog.Targets.NetworkTarget.MaxConnections.
+
+
+
+
+ Indicates whether to keep connection open whenever possible.
+
+
+
+
+ The number of seconds a connection will remain idle before the first keep-alive probe is sent
+
+
+
+
+ Size of the connection cache (number of connections which are kept alive). Requires P:NLog.Targets.NetworkTarget.KeepConnection = true
+
+
+
+
+ Network address.
+
+
+
+
+ Maximum simultaneous connections. Requires P:NLog.Targets.NetworkTarget.KeepConnection = false
+
+
+
+
+ Type of compression for protocol payload. Useful for UDP where datagram max-size is 8192 bytes.
+
+
+
+
+ Skip compression when protocol payload is below limit to reduce overhead in cpu-usage and additional headers
+
+
+
+
+ Maximum message size in bytes. On limit breach then P:NLog.Targets.NetworkTarget.OnOverflow action is activated.
+
+
+
+
+ Encoding to be used.
+
+
+
+
+ End of line value if a newline is appended at the end of log message P:NLog.Targets.NetworkTarget.NewLine.
+
+
+
+
+ Indicates whether to append newline at the end of log message.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Name of the target.
+
+
+
+
+ Separator for T:NLog.ScopeContext operation-states-stack.
+
+
+
+
+ Stack separator for log4j:NDC in output from T:NLog.ScopeContext nested context.
+
+
+
+
+ Renderer for log4j:event logger-xml-attribute (Default ${logger})
+
+
+
+
+ Whether to include the contents of the T:NLog.ScopeContext properties-dictionary.
+
+
+
+
+ Whether to include log4j:NDC in output from T:NLog.ScopeContext nested context.
+
+
+
+
+ Indicates whether to include source info (file name and line number) in the information sent over the network.
+
+
+
+
+ Whether to include log4j:NDC in output from T:NLog.ScopeContext nested context.
+
+
+
+
+ Option to include all properties from the log events
+
+
+
+
+ Indicates whether to include call site (class and method name) in the information sent over the network.
+
+
+
+
+ AppInfo field. By default it's the friendly name of the current AppDomain.
+
+
+
+
+ Instance of T:NLog.Layouts.Log4JXmlEventLayout that is used to format log messages.
+
+
+
+
+ Indicates whether to include NLog-specific extensions to log4j schema.
+
+
+
+
+ Action that should be taken, when more connections than P:NLog.Targets.NetworkTarget.MaxConnections.
+
+
+
+
+ SSL/TLS protocols. Default no SSL/TLS is used. Currently only implemented for TCP.
+
+
+
+
+ Action that should be taken, when more pending messages than P:NLog.Targets.NetworkTarget.MaxQueueSize.
+
+
+
+
+ Action that should be taken if the message is larger than P:NLog.Targets.NetworkTarget.MaxMessageSize
+
+
+
+
+ Maximum queue size for a single connection. Requires P:NLog.Targets.NetworkTarget.KeepConnection = true
+
+
+
+
+ Network address.
+
+
+
+
+ Indicates whether to keep connection open whenever possible.
+
+
+
+
+ The number of seconds a connection will remain idle before the first keep-alive probe is sent
+
+
+
+
+ Size of the connection cache (number of connections which are kept alive). Requires P:NLog.Targets.NetworkTarget.KeepConnection = true
+
+
+
+
+ Maximum simultaneous connections. Requires P:NLog.Targets.NetworkTarget.KeepConnection = false
+
+
+
+
+ Type of compression for protocol payload. Useful for UDP where datagram max-size is 8192 bytes.
+
+
+
+
+ Skip compression when protocol payload is below limit to reduce overhead in cpu-usage and additional headers
+
+
+
+
+ Maximum message size in bytes. On limit breach then P:NLog.Targets.NetworkTarget.OnOverflow action is activated.
+
+
+
+
+ Encoding to be used.
+
+
+
+
+ End of line value if a newline is appended at the end of log message P:NLog.Targets.NetworkTarget.NewLine.
+
+
+
+
+ Indicates whether to append newline at the end of log message.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Name of the target.
+
+
+
+
+ Layout used to format log messages.
+
+
+
+
+ Indicates whether to perform layout calculation.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Name of the target.
+
+
+
+
+ Default filter to be applied when no specific rule matches.
+
+
+
+
+
+
+
+
+
+
+
+
+ Condition to be tested.
+
+
+
+
+ Resulting filter to be applied when the condition matches.
+
+
+
+
+
+
+
+
+
+
+
+ Name of the target.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Name of the target.
+
+
+
+
+ Number of times to repeat each log message.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Name of the target.
+
+
+
+
+ Whether to enable batching, and only apply single delay when a whole batch fails
+
+
+
+
+ Number of retries that should be attempted on the wrapped target in case of a failure.
+
+
+
+
+ Time to wait between retries in milliseconds.
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Name of the target.
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Name of the target.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Name of the target.
+
+
+
+
+ Text to be rendered.
+
+
+
+
+ Header.
+
+
+
+
+ Footer.
+
+
+
+
+ Forward F:NLog.LogLevel.Fatal to M:System.Diagnostics.Trace.Fail(System.String) (Instead of M:System.Diagnostics.Trace.TraceError(System.String))
+
+
+
+
+ Force use M:System.Diagnostics.Trace.WriteLine(System.String) independent of T:NLog.LogLevel
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Name of the target.
+
+
+
+
+ Indicates whether to pre-authenticate the HttpWebRequest (Requires 'Authorization' in P:NLog.Targets.WebServiceTarget.Headers parameters)
+
+
+
+
+ Value whether escaping be done according to Rfc3986 (Supports Internationalized Resource Identifiers - IRIs)
+
+
+
+
+ Value whether escaping be done according to the old NLog style (Very non-standard)
+
+
+
+
+ Value of the User-agent HTTP header.
+
+
+
+
+ Web service URL.
+
+
+
+
+ Proxy configuration when calling web service
+
+
+
+
+ Custom proxy address, include port separated by a colon
+
+
+
+
+ Protocol to be used when calling web service.
+
+
+
+
+ Web service namespace. Only used with Soap.
+
+
+
+
+ Web service method name. Only used with Soap.
+
+
+
+
+ Should we include the BOM (Byte-order-mark) for UTF? Influences the P:NLog.Targets.WebServiceTarget.Encoding property. This will only work for UTF-8.
+
+
+
+
+ Encoding.
+
+
+
+
+ Name of the root XML element, if POST of XML document chosen. If so, this property must not be null. (see P:NLog.Targets.WebServiceTarget.Protocol and F:NLog.Targets.WebServiceProtocol.XmlPost).
+
+
+
+
+ (optional) root namespace of the XML document, if POST of XML document chosen. (see P:NLog.Targets.WebServiceTarget.Protocol and F:NLog.Targets.WebServiceProtocol.XmlPost).
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Custom column delimiter value (valid when ColumnDelimiter is set to 'Custom').
+
+
+
+
+ Column delimiter.
+
+
+
+
+ Footer layout.
+
+
+
+
+ Header layout.
+
+
+
+
+ Body layout (can be repeated multiple times).
+
+
+
+
+ Quote Character.
+
+
+
+
+ Quoting mode.
+
+
+
+
+ Indicates whether CVS should include header.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Name of the column.
+
+
+
+
+ Layout of the column.
+
+
+
+
+ Override of Quoting mode
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Option to render the empty object value {}
+
+
+
+
+ Option to suppress the extra spaces in the output json
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Option to include all properties from the log event (as JSON)
+
+
+
+
+ Indicates whether to include contents of the T:NLog.GlobalDiagnosticsContext dictionary.
+
+
+
+
+ Whether to include the contents of the T:NLog.ScopeContext dictionary.
+
+
+
+
+ Should forward slashes be escaped? If true, / will be converted to \/
+
+
+
+
+ Option to exclude null/empty properties from the log event (as JSON)
+
+
+
+
+ List of property names to exclude when P:NLog.Layouts.JsonLayout.IncludeAllProperties is true
+
+
+
+
+ How far should the JSON serializer follow object references before backing off
+
+
+
+
+ Option to render the empty object value {}
+
+
+
+
+ Option to suppress the extra spaces in the output json
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Name of the attribute.
+
+
+
+
+ Layout that will be rendered as the attribute's value.
+
+
+
+
+ Fallback value when result value is not available
+
+
+
+
+ Determines whether or not this attribute will be Json encoded.
+
+
+
+
+ Should forward slashes be escaped? If true, / will be converted to \/
+
+
+
+
+ Indicates whether to escape non-ascii characters
+
+
+
+
+ Whether an attribute with empty value should be included in the output
+
+
+
+
+ Result value type, for conversion of layout rendering output
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Footer layout.
+
+
+
+
+ Header layout.
+
+
+
+
+ Body layout (can be repeated multiple times).
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Option to include all properties from the log events
+
+
+
+
+ Whether to include log4j:NDC in output from T:NLog.ScopeContext nested context.
+
+
+
+
+ Whether to include log4j:NDC in output from T:NLog.ScopeContext nested context.
+
+
+
+
+ Whether to include the contents of the T:NLog.ScopeContext properties-dictionary.
+
+
+
+
+ AppInfo field. By default it's the friendly name of the current AppDomain.
+
+
+
+
+ Indicates whether to include call site (class and method name) in the information sent over the network.
+
+
+
+
+ Indicates whether to include source info (file name and line number) in the information sent over the network.
+
+
+
+
+ Log4j:event logger-xml-attribute (Default ${logger})
+
+
+
+
+ Whether the log4j:throwable xml-element should be written as CDATA
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Layout text.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Name of the root XML element
+
+
+
+
+ Value inside the root XML element
+
+
+
+
+ Whether to include the contents of the T:NLog.ScopeContext dictionary.
+
+
+
+
+ Determines whether or not this attribute will be Xml encoded.
+
+
+
+
+ List of property names to exclude when P:NLog.Layouts.XmlElementBase.IncludeAllProperties is true
+
+
+
+
+ Whether a ElementValue with empty value should be included in the output
+
+
+
+
+ Auto indent and create new lines
+
+
+
+
+ How far should the XML serializer follow object references before backing off
+
+
+
+
+ XML element name to use for rendering IList-collections items
+
+
+
+
+ XML attribute name to use when rendering property-key When null (or empty) then key-attribute is not included
+
+
+
+
+ XML element name to use when rendering properties
+
+
+
+
+ XML attribute name to use when rendering property-value When null (or empty) then value-attribute is not included and value is formatted as XML-element-value
+
+
+
+
+ Option to include all properties from the log event (as XML)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Name of the attribute.
+
+
+
+
+ Layout that will be rendered as the attribute's value.
+
+
+
+
+ Fallback value when result value is not available
+
+
+
+
+ Determines whether or not this attribute will be Xml encoded.
+
+
+
+
+ Whether an attribute with empty value should be included in the output
+
+
+
+
+ Result value type, for conversion of layout rendering output
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Name of the element
+
+
+
+
+ Whether to include the contents of the T:NLog.ScopeContext dictionary.
+
+
+
+
+ Value inside the element
+
+
+
+
+ Determines whether or not this attribute will be Xml encoded.
+
+
+
+
+ List of property names to exclude when P:NLog.Layouts.XmlElementBase.IncludeAllProperties is true
+
+
+
+
+ Whether a ElementValue with empty value should be included in the output
+
+
+
+
+ Auto indent and create new lines
+
+
+
+
+ How far should the XML serializer follow object references before backing off
+
+
+
+
+ XML element name to use for rendering IList-collections items
+
+
+
+
+ XML attribute name to use when rendering property-key When null (or empty) then key-attribute is not included
+
+
+
+
+ XML element name to use when rendering properties
+
+
+
+
+ XML attribute name to use when rendering property-value When null (or empty) then value-attribute is not included and value is formatted as XML-element-value
+
+
+
+
+ Option to include all properties from the log event (as XML)
+
+
+
+
+
+
+
+
+
+
+
+
+ Action to be taken when filter matches.
+
+
+
+
+ Condition expression.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Action to be taken when filter matches.
+
+
+
+
+ Indicates whether to ignore case when comparing strings.
+
+
+
+
+ Layout to be used to filter log messages.
+
+
+
+
+ Substring to be matched.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Action to be taken when filter matches.
+
+
+
+
+ String to compare the layout to.
+
+
+
+
+ Indicates whether to ignore case when comparing strings.
+
+
+
+
+ Layout to be used to filter log messages.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Action to be taken when filter matches.
+
+
+
+
+ Indicates whether to ignore case when comparing strings.
+
+
+
+
+ Layout to be used to filter log messages.
+
+
+
+
+ Substring to be matched.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Action to be taken when filter matches.
+
+
+
+
+ String to compare the layout to.
+
+
+
+
+ Indicates whether to ignore case when comparing strings.
+
+
+
+
+ Layout to be used to filter log messages.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Action to be taken when filter matches.
+
+
+
+
+ Append FilterCount to the P:NLog.LogEventInfo.Message when an event is no longer filtered
+
+
+
+
+ Insert FilterCount value into P:NLog.LogEventInfo.Properties when an event is no longer filtered
+
+
+
+
+ Applies the configured action to the initial logevent that starts the timeout period. Used to configure that it should ignore all events until timeout.
+
+
+
+
+ Layout to be used to filter log messages.
+
+
+
+
+ Max length of filter values, will truncate if above limit
+
+
+
+
+ How long before a filter expires, and logging is accepted again
+
+
+
+
+ Default number of unique filter values to expect, will automatically increase if needed
+
+
+
+
+ Max number of unique filter values to expect simultaneously
+
+
+
+
+ Default buffer size for the internal buffers
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/GameServer/Bin/Debug/net9.0/Newtonsoft.Json.dll b/GameServer/Bin/Debug/net9.0/Newtonsoft.Json.dll
new file mode 100644
index 00000000..d035c38b
Binary files /dev/null and b/GameServer/Bin/Debug/net9.0/Newtonsoft.Json.dll differ
diff --git a/GameServer/Bin/Debug/net9.0/SharpCompress.dll b/GameServer/Bin/Debug/net9.0/SharpCompress.dll
new file mode 100644
index 00000000..c1a7f074
Binary files /dev/null and b/GameServer/Bin/Debug/net9.0/SharpCompress.dll differ
diff --git a/GameServer/Bin/Debug/net9.0/Snappier.dll b/GameServer/Bin/Debug/net9.0/Snappier.dll
new file mode 100644
index 00000000..9b68e856
Binary files /dev/null and b/GameServer/Bin/Debug/net9.0/Snappier.dll differ
diff --git a/GameServer/Bin/Debug/net9.0/System.IdentityModel.Tokens.Jwt.dll b/GameServer/Bin/Debug/net9.0/System.IdentityModel.Tokens.Jwt.dll
new file mode 100644
index 00000000..f7a07695
Binary files /dev/null and b/GameServer/Bin/Debug/net9.0/System.IdentityModel.Tokens.Jwt.dll differ
diff --git a/GameServer/Bin/Debug/net9.0/ZstdSharp.dll b/GameServer/Bin/Debug/net9.0/ZstdSharp.dll
new file mode 100644
index 00000000..5d93f7e5
Binary files /dev/null and b/GameServer/Bin/Debug/net9.0/ZstdSharp.dll differ
diff --git a/GameServer/Bin/Debug/net9.0/protobuf-net.Core.dll b/GameServer/Bin/Debug/net9.0/protobuf-net.Core.dll
new file mode 100644
index 00000000..b3e554dc
Binary files /dev/null and b/GameServer/Bin/Debug/net9.0/protobuf-net.Core.dll differ
diff --git a/GameServer/Bin/Debug/net9.0/protobuf-net.dll b/GameServer/Bin/Debug/net9.0/protobuf-net.dll
new file mode 100644
index 00000000..e75237bc
Binary files /dev/null and b/GameServer/Bin/Debug/net9.0/protobuf-net.dll differ
diff --git a/GameServer/Bin/Release/Logs/Server/Server20250325/Server..2025032516.Debug.log b/GameServer/Bin/Release/Logs/Server/Server20250325/Server..2025032516.Debug.log
new file mode 100644
index 00000000..0d2e2783
--- /dev/null
+++ b/GameServer/Bin/Release/Logs/Server/Server20250325/Server..2025032516.Debug.log
@@ -0,0 +1,4 @@
+2025-03-25 16:45:05.1461 初始化鉴权服务器组件
+2025-03-25 16:45:05.3997 初始化鉴权服务器组件
+2025-03-25 16:45:05.8064 初始网关(Gate)服务器组件
+2025-03-25 16:45:06.2004 初始网关(Gate)服务器组件
diff --git a/GameServer/Bin/Release/Logs/Server/Server20250325/Server..2025032516.Error.log b/GameServer/Bin/Release/Logs/Server/Server20250325/Server..2025032516.Error.log
new file mode 100644
index 00000000..584e45ba
--- /dev/null
+++ b/GameServer/Bin/Release/Logs/Server/Server20250325/Server..2025032516.Error.log
@@ -0,0 +1,21 @@
+2025-03-25 16:43:48.5270 System.Net.Sockets.SocketException (10049): 在其上下文中,该请求的地址无效。
+ at System.Net.Sockets.Socket.UpdateStatusAfterSocketErrorAndThrowException(SocketError error, Boolean disconnectOnFailure, String callerName)
+ at System.Net.Sockets.Socket.DoBind(EndPoint endPointSnapshot, SocketAddress socketAddress)
+ at System.Net.Sockets.Socket.Bind(EndPoint localEP)
+ at Fantasy.Network.TCP.TCPServerNetwork.Initialize(NetworkTarget networkTarget, IPEndPoint address)
+ at Fantasy.Network.NetworkProtocolFactory.CreateServer(Scene scene, NetworkProtocolType protocolType, NetworkTarget networkTarget, String bindIp, Int32 port)
+ at Fantasy.Scene.Create(Process process, MachineConfig machineConfig, SceneConfig sceneConfig)
+ at Fantasy.Platform.Net.Process.Create(UInt32 processConfigId)
+ at Fantasy.Platform.Net.Entry.StartProcess()
+ at Fantasy.Async.FTask.InnerCoroutine()
+ at Fantasy.Async.FTask.InnerCoroutine()
+ at Fantasy.Platform.Net.Entry.StartProcess()
+ at Fantasy.Platform.Net.Process.Create(UInt32 processConfigId)
+ at Fantasy.Scene.Create(Process process, MachineConfig machineConfig, SceneConfig sceneConfig)
+ at Fantasy.Scene.SetScheduler(Scene scene, String sceneRuntimeType)
+ at Fantasy.Scene.Initialize()
+ at Fantasy.SingleCollection.SingleCollectionComponent.Initialize()
+ at Fantasy.Assembly.AssemblySystem.Register(Object obj)
+ at Fantasy.SingleCollection.SingleCollectionComponent.Load(Int64 assemblyIdentity)
+ at Fantasy.SingleCollection.SingleCollectionComponent.<>c__DisplayClass5_0.b__0()
+ at Fantasy.ThreadSynchronizationContext.Update()
diff --git a/GameServer/Bin/Release/Logs/Server/Server20250325/Server..2025032516.Info.log b/GameServer/Bin/Release/Logs/Server/Server20250325/Server..2025032516.Info.log
new file mode 100644
index 00000000..23ebf5e6
--- /dev/null
+++ b/GameServer/Bin/Release/Logs/Server/Server20250325/Server..2025032516.Info.log
@@ -0,0 +1,13 @@
+2025-03-25 16:43:47.9511 初始化序列化器成功,数量为:2
+2025-03-25 16:45:04.0820 初始化序列化器成功,数量为:2
+2025-03-25 16:45:04.7487 SceneConfigId = 1001 networkTarget = Inner TCPServer Listen 127.0.0.1:11001
+2025-03-25 16:45:04.9620 SceneConfigId = 1001 networkTarget = Outer KCPServer Listen 127.0.0.1:21001
+2025-03-25 16:45:05.1461 RSA密钥导入成功
+2025-03-25 16:45:05.1957 SceneConfigId = 1002 networkTarget = Inner TCPServer Listen 127.0.0.1:11002
+2025-03-25 16:45:05.3997 SceneConfigId = 1002 networkTarget = Outer KCPServer Listen 127.0.0.1:21002
+2025-03-25 16:45:05.3997 RSA密钥导入成功
+2025-03-25 16:45:05.6180 SceneConfigId = 1010 networkTarget = Inner TCPServer Listen 127.0.0.1:11010
+2025-03-25 16:45:05.8064 SceneConfigId = 1010 networkTarget = Outer KCPServer Listen 127.0.0.1:21010
+2025-03-25 16:45:06.0134 SceneConfigId = 1011 networkTarget = Inner TCPServer Listen 127.0.0.1:11011
+2025-03-25 16:45:06.2004 SceneConfigId = 1011 networkTarget = Outer KCPServer Listen 127.0.0.1:21011
+2025-03-25 16:45:06.2004 Process:1 Startup Complete SceneCount:4
diff --git a/GameServer/Bin/Release/net9.0/APlugins.dll b/GameServer/Bin/Release/net9.0/APlugins.dll
new file mode 100644
index 00000000..cc1491d5
Binary files /dev/null and b/GameServer/Bin/Release/net9.0/APlugins.dll differ
diff --git a/GameServer/Bin/Release/net9.0/APlugins.pdb b/GameServer/Bin/Release/net9.0/APlugins.pdb
new file mode 100644
index 00000000..1045ce75
Binary files /dev/null and b/GameServer/Bin/Release/net9.0/APlugins.pdb differ
diff --git a/GameServer/Bin/Release/net9.0/CommandLine.dll b/GameServer/Bin/Release/net9.0/CommandLine.dll
new file mode 100644
index 00000000..3eab2be2
Binary files /dev/null and b/GameServer/Bin/Release/net9.0/CommandLine.dll differ
diff --git a/GameServer/Bin/Release/net9.0/DnsClient.dll b/GameServer/Bin/Release/net9.0/DnsClient.dll
new file mode 100644
index 00000000..39aa546a
Binary files /dev/null and b/GameServer/Bin/Release/net9.0/DnsClient.dll differ
diff --git a/GameServer/Bin/Release/net9.0/Entity.dll b/GameServer/Bin/Release/net9.0/Entity.dll
new file mode 100644
index 00000000..c362e995
Binary files /dev/null and b/GameServer/Bin/Release/net9.0/Entity.dll differ
diff --git a/GameServer/Bin/Release/net9.0/Entity.pdb b/GameServer/Bin/Release/net9.0/Entity.pdb
new file mode 100644
index 00000000..3976e226
Binary files /dev/null and b/GameServer/Bin/Release/net9.0/Entity.pdb differ
diff --git a/GameServer/Bin/Release/net9.0/Fantasy-Net.Config.dll b/GameServer/Bin/Release/net9.0/Fantasy-Net.Config.dll
new file mode 100644
index 00000000..7642a225
Binary files /dev/null and b/GameServer/Bin/Release/net9.0/Fantasy-Net.Config.dll differ
diff --git a/GameServer/Bin/Release/net9.0/Fantasy-Net.ConfigTable.dll b/GameServer/Bin/Release/net9.0/Fantasy-Net.ConfigTable.dll
new file mode 100644
index 00000000..8996ebc6
Binary files /dev/null and b/GameServer/Bin/Release/net9.0/Fantasy-Net.ConfigTable.dll differ
diff --git a/GameServer/Bin/Release/net9.0/Fantasy-Net.NLog.dll b/GameServer/Bin/Release/net9.0/Fantasy-Net.NLog.dll
new file mode 100644
index 00000000..7ffbcb54
Binary files /dev/null and b/GameServer/Bin/Release/net9.0/Fantasy-Net.NLog.dll differ
diff --git a/GameServer/Bin/Release/net9.0/Fantasy-Net.dll b/GameServer/Bin/Release/net9.0/Fantasy-Net.dll
new file mode 100644
index 00000000..41e585d5
Binary files /dev/null and b/GameServer/Bin/Release/net9.0/Fantasy-Net.dll differ
diff --git a/GameServer/Bin/Release/net9.0/Fantasy.Tools.ExporterConfigTable.dll b/GameServer/Bin/Release/net9.0/Fantasy.Tools.ExporterConfigTable.dll
new file mode 100644
index 00000000..cabb7662
Binary files /dev/null and b/GameServer/Bin/Release/net9.0/Fantasy.Tools.ExporterConfigTable.dll differ
diff --git a/GameServer/Bin/Release/net9.0/Fantasy.Tools.ExporterNetworkProtocol.dll b/GameServer/Bin/Release/net9.0/Fantasy.Tools.ExporterNetworkProtocol.dll
new file mode 100644
index 00000000..22e11f8c
Binary files /dev/null and b/GameServer/Bin/Release/net9.0/Fantasy.Tools.ExporterNetworkProtocol.dll differ
diff --git a/GameServer/Bin/Release/net9.0/Hotfix.dll b/GameServer/Bin/Release/net9.0/Hotfix.dll
new file mode 100644
index 00000000..7cc2cb57
Binary files /dev/null and b/GameServer/Bin/Release/net9.0/Hotfix.dll differ
diff --git a/GameServer/Bin/Release/net9.0/Hotfix.pdb b/GameServer/Bin/Release/net9.0/Hotfix.pdb
new file mode 100644
index 00000000..0fbc1833
Binary files /dev/null and b/GameServer/Bin/Release/net9.0/Hotfix.pdb differ
diff --git a/GameServer/Bin/Release/net9.0/Main.deps.json b/GameServer/Bin/Release/net9.0/Main.deps.json
new file mode 100644
index 00000000..d7051637
--- /dev/null
+++ b/GameServer/Bin/Release/net9.0/Main.deps.json
@@ -0,0 +1,578 @@
+{
+ "runtimeTarget": {
+ "name": ".NETCoreApp,Version=v9.0",
+ "signature": ""
+ },
+ "compilationOptions": {},
+ "targets": {
+ ".NETCoreApp,Version=v9.0": {
+ "Main/1.0.0": {
+ "dependencies": {
+ "APlugins": "1.0.0",
+ "Entity": "1.0.0",
+ "Fantasy-Net.NLog": "2024.1.20",
+ "Hotfix": "1.0.0"
+ },
+ "runtime": {
+ "Main.dll": {}
+ }
+ },
+ "CommandLineParser/2.9.1": {
+ "runtime": {
+ "lib/netstandard2.0/CommandLine.dll": {
+ "assemblyVersion": "2.9.1.0",
+ "fileVersion": "2.9.1.0"
+ }
+ }
+ },
+ "DnsClient/1.6.1": {
+ "dependencies": {
+ "Microsoft.Win32.Registry": "5.0.0"
+ },
+ "runtime": {
+ "lib/net5.0/DnsClient.dll": {
+ "assemblyVersion": "1.6.1.0",
+ "fileVersion": "1.6.1.0"
+ }
+ }
+ },
+ "Fantasy-Net/2024.2.24": {
+ "dependencies": {
+ "CommandLineParser": "2.9.1",
+ "MongoDB.Bson": "3.1.0",
+ "MongoDB.Driver": "3.1.0",
+ "Newtonsoft.Json": "13.0.3",
+ "protobuf-net": "3.2.45"
+ },
+ "runtime": {
+ "lib/net9.0/Fantasy-Net.dll": {
+ "assemblyVersion": "1.0.0.0",
+ "fileVersion": "1.0.0.0"
+ }
+ }
+ },
+ "Fantasy-Net.Config/2024.1.4": {
+ "runtime": {
+ "lib/net8.0/Fantasy-Net.Config.dll": {
+ "assemblyVersion": "1.0.0.0",
+ "fileVersion": "1.0.0.0"
+ }
+ }
+ },
+ "Fantasy-Net.ConfigTable/2024.2.0": {
+ "dependencies": {
+ "Fantasy-Net": "2024.2.24"
+ },
+ "runtime": {
+ "lib/net8.0/Fantasy-Net.ConfigTable.dll": {
+ "assemblyVersion": "1.0.0.0",
+ "fileVersion": "1.0.0.0"
+ }
+ }
+ },
+ "Fantasy-Net.NLog/2024.1.20": {
+ "dependencies": {
+ "Fantasy-Net": "2024.2.24",
+ "NLog": "5.3.4"
+ },
+ "runtime": {
+ "lib/net8.0/Fantasy-Net.NLog.dll": {
+ "assemblyVersion": "1.0.0.0",
+ "fileVersion": "1.0.0.0"
+ }
+ }
+ },
+ "Fantasy-Net.Tools.ExporterConfigTable/2024.2.0": {
+ "runtime": {
+ "lib/net8.0/Fantasy.Tools.ExporterConfigTable.dll": {
+ "assemblyVersion": "1.0.0.0",
+ "fileVersion": "1.0.0.0"
+ }
+ }
+ },
+ "Fantasy-Net.Tools.ExporterNetworkProtocol/2024.2.24": {
+ "runtime": {
+ "lib/net8.0/Fantasy.Tools.ExporterNetworkProtocol.dll": {
+ "assemblyVersion": "1.0.0.0",
+ "fileVersion": "1.0.0.0"
+ }
+ }
+ },
+ "Microsoft.Extensions.DependencyInjection.Abstractions/8.0.2": {},
+ "Microsoft.Extensions.Logging.Abstractions/8.0.2": {
+ "dependencies": {
+ "Microsoft.Extensions.DependencyInjection.Abstractions": "8.0.2"
+ }
+ },
+ "Microsoft.IdentityModel.Abstractions/8.6.1": {
+ "runtime": {
+ "lib/net9.0/Microsoft.IdentityModel.Abstractions.dll": {
+ "assemblyVersion": "8.6.1.0",
+ "fileVersion": "8.6.1.60307"
+ }
+ }
+ },
+ "Microsoft.IdentityModel.JsonWebTokens/8.6.1": {
+ "dependencies": {
+ "Microsoft.IdentityModel.Tokens": "8.6.1"
+ },
+ "runtime": {
+ "lib/net9.0/Microsoft.IdentityModel.JsonWebTokens.dll": {
+ "assemblyVersion": "8.6.1.0",
+ "fileVersion": "8.6.1.60307"
+ }
+ }
+ },
+ "Microsoft.IdentityModel.Logging/8.6.1": {
+ "dependencies": {
+ "Microsoft.IdentityModel.Abstractions": "8.6.1"
+ },
+ "runtime": {
+ "lib/net9.0/Microsoft.IdentityModel.Logging.dll": {
+ "assemblyVersion": "8.6.1.0",
+ "fileVersion": "8.6.1.60307"
+ }
+ }
+ },
+ "Microsoft.IdentityModel.Tokens/8.6.1": {
+ "dependencies": {
+ "Microsoft.Extensions.Logging.Abstractions": "8.0.2",
+ "Microsoft.IdentityModel.Logging": "8.6.1"
+ },
+ "runtime": {
+ "lib/net9.0/Microsoft.IdentityModel.Tokens.dll": {
+ "assemblyVersion": "8.6.1.0",
+ "fileVersion": "8.6.1.60307"
+ }
+ }
+ },
+ "Microsoft.NETCore.Platforms/5.0.0": {},
+ "Microsoft.Win32.Registry/5.0.0": {
+ "dependencies": {
+ "System.Security.AccessControl": "5.0.0",
+ "System.Security.Principal.Windows": "5.0.0"
+ }
+ },
+ "MongoDB.Bson/3.1.0": {
+ "dependencies": {
+ "System.Memory": "4.5.5",
+ "System.Runtime.CompilerServices.Unsafe": "5.0.0"
+ },
+ "runtime": {
+ "lib/net6.0/MongoDB.Bson.dll": {
+ "assemblyVersion": "3.1.0.0",
+ "fileVersion": "3.1.0.0"
+ }
+ }
+ },
+ "MongoDB.Driver/3.1.0": {
+ "dependencies": {
+ "DnsClient": "1.6.1",
+ "Microsoft.Extensions.Logging.Abstractions": "8.0.2",
+ "MongoDB.Bson": "3.1.0",
+ "SharpCompress": "0.30.1",
+ "Snappier": "1.0.0",
+ "System.Buffers": "4.5.1",
+ "ZstdSharp.Port": "0.7.3"
+ },
+ "runtime": {
+ "lib/net6.0/MongoDB.Driver.dll": {
+ "assemblyVersion": "3.1.0.0",
+ "fileVersion": "3.1.0.0"
+ }
+ }
+ },
+ "Newtonsoft.Json/13.0.3": {
+ "runtime": {
+ "lib/net6.0/Newtonsoft.Json.dll": {
+ "assemblyVersion": "13.0.0.0",
+ "fileVersion": "13.0.3.27908"
+ }
+ }
+ },
+ "NLog/5.3.4": {
+ "runtime": {
+ "lib/netstandard2.0/NLog.dll": {
+ "assemblyVersion": "5.0.0.0",
+ "fileVersion": "5.3.4.2778"
+ }
+ }
+ },
+ "protobuf-net/3.2.45": {
+ "dependencies": {
+ "protobuf-net.Core": "3.2.45"
+ },
+ "runtime": {
+ "lib/net6.0/protobuf-net.dll": {
+ "assemblyVersion": "3.0.0.0",
+ "fileVersion": "3.2.45.36865"
+ }
+ }
+ },
+ "protobuf-net.Core/3.2.45": {
+ "dependencies": {
+ "System.Collections.Immutable": "7.0.0"
+ },
+ "runtime": {
+ "lib/net6.0/protobuf-net.Core.dll": {
+ "assemblyVersion": "3.0.0.0",
+ "fileVersion": "3.2.45.36865"
+ }
+ }
+ },
+ "SharpCompress/0.30.1": {
+ "runtime": {
+ "lib/net5.0/SharpCompress.dll": {
+ "assemblyVersion": "0.30.1.0",
+ "fileVersion": "0.30.1.0"
+ }
+ }
+ },
+ "Snappier/1.0.0": {
+ "runtime": {
+ "lib/net5.0/Snappier.dll": {
+ "assemblyVersion": "1.0.0.0",
+ "fileVersion": "1.0.0.0"
+ }
+ }
+ },
+ "System.Buffers/4.5.1": {},
+ "System.Collections.Immutable/7.0.0": {},
+ "System.Formats.Asn1/5.0.0": {},
+ "System.IdentityModel.Tokens.Jwt/8.6.1": {
+ "dependencies": {
+ "Microsoft.IdentityModel.JsonWebTokens": "8.6.1",
+ "Microsoft.IdentityModel.Tokens": "8.6.1"
+ },
+ "runtime": {
+ "lib/net9.0/System.IdentityModel.Tokens.Jwt.dll": {
+ "assemblyVersion": "8.6.1.0",
+ "fileVersion": "8.6.1.60307"
+ }
+ }
+ },
+ "System.Memory/4.5.5": {},
+ "System.Runtime.CompilerServices.Unsafe/5.0.0": {},
+ "System.Security.AccessControl/5.0.0": {
+ "dependencies": {
+ "Microsoft.NETCore.Platforms": "5.0.0",
+ "System.Security.Principal.Windows": "5.0.0"
+ }
+ },
+ "System.Security.Cryptography.Cng/5.0.0": {
+ "dependencies": {
+ "System.Formats.Asn1": "5.0.0"
+ }
+ },
+ "System.Security.Principal.Windows/5.0.0": {},
+ "ZstdSharp.Port/0.7.3": {
+ "runtime": {
+ "lib/net7.0/ZstdSharp.dll": {
+ "assemblyVersion": "0.7.3.0",
+ "fileVersion": "0.7.3.0"
+ }
+ }
+ },
+ "APlugins/1.0.0": {
+ "dependencies": {
+ "Fantasy-Net.Config": "2024.1.4",
+ "Fantasy-Net.ConfigTable": "2024.2.0",
+ "Fantasy-Net.Tools.ExporterConfigTable": "2024.2.0",
+ "Fantasy-Net.Tools.ExporterNetworkProtocol": "2024.2.24",
+ "Microsoft.IdentityModel.Tokens": "8.6.1"
+ },
+ "runtime": {
+ "APlugins.dll": {
+ "assemblyVersion": "1.0.0.0",
+ "fileVersion": "1.0.0.0"
+ }
+ }
+ },
+ "Entity/1.0.0": {
+ "dependencies": {
+ "APlugins": "1.0.0",
+ "Fantasy-Net": "2024.2.24",
+ "System.IdentityModel.Tokens.Jwt": "8.6.1",
+ "System.Security.Cryptography.Cng": "5.0.0"
+ },
+ "runtime": {
+ "Entity.dll": {
+ "assemblyVersion": "1.0.0.0",
+ "fileVersion": "1.0.0.0"
+ }
+ }
+ },
+ "Hotfix/1.0.0": {
+ "dependencies": {
+ "Entity": "1.0.0"
+ },
+ "runtime": {
+ "Hotfix.dll": {
+ "assemblyVersion": "1.0.0.0",
+ "fileVersion": "1.0.0.0"
+ }
+ }
+ }
+ }
+ },
+ "libraries": {
+ "Main/1.0.0": {
+ "type": "project",
+ "serviceable": false,
+ "sha512": ""
+ },
+ "CommandLineParser/2.9.1": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-OE0sl1/sQ37bjVsPKKtwQlWDgqaxWgtme3xZz7JssWUzg5JpMIyHgCTY9MVMxOg48fJ1AgGT3tgdH5m/kQ5xhA==",
+ "path": "commandlineparser/2.9.1",
+ "hashPath": "commandlineparser.2.9.1.nupkg.sha512"
+ },
+ "DnsClient/1.6.1": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-4H/f2uYJOZ+YObZjpY9ABrKZI+JNw3uizp6oMzTXwDw6F+2qIPhpRl/1t68O/6e98+vqNiYGu+lswmwdYUy3gg==",
+ "path": "dnsclient/1.6.1",
+ "hashPath": "dnsclient.1.6.1.nupkg.sha512"
+ },
+ "Fantasy-Net/2024.2.24": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-5u460iiB29NDwxIBV25WzuxUxW5fV0i8DJ2OE47fSJW1lWq+AP/LJ4KYqcH6zngyDFMOMOjh2S6hT3IZ/r4dwA==",
+ "path": "fantasy-net/2024.2.24",
+ "hashPath": "fantasy-net.2024.2.24.nupkg.sha512"
+ },
+ "Fantasy-Net.Config/2024.1.4": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-zStTIJq91mx3VjCcU7eAtrExAcv1Zg+dAd8UdDvpHu7kTY8ldDQMp8sCmez2s+vUTmNyH1hlOgEE3rJILAijfQ==",
+ "path": "fantasy-net.config/2024.1.4",
+ "hashPath": "fantasy-net.config.2024.1.4.nupkg.sha512"
+ },
+ "Fantasy-Net.ConfigTable/2024.2.0": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-TIpd7Cz5eTx5WlI0QPA/gLkTCNWW4DHFXG5ZXgLjkxgxC4AYpXzvktaU/merldPuccaebc7ld8oVxJ0fejKHEg==",
+ "path": "fantasy-net.configtable/2024.2.0",
+ "hashPath": "fantasy-net.configtable.2024.2.0.nupkg.sha512"
+ },
+ "Fantasy-Net.NLog/2024.1.20": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-HJuHfecWrD7tcQYEZezJzgayvG5leAbdWlgvo9ft/CUuwTtAB+tkeKP3e3VtbkCoPaAZO4VAUN0Y30Ute2/vrQ==",
+ "path": "fantasy-net.nlog/2024.1.20",
+ "hashPath": "fantasy-net.nlog.2024.1.20.nupkg.sha512"
+ },
+ "Fantasy-Net.Tools.ExporterConfigTable/2024.2.0": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-jPL8qd+9WTsOAOhXVkAOHuwjoyFTGIg6Zr/zsSP+OB4G6sNklcHI0KDnMYWN0EW01fSycl/g1DyRyyDdwZ2iPQ==",
+ "path": "fantasy-net.tools.exporterconfigtable/2024.2.0",
+ "hashPath": "fantasy-net.tools.exporterconfigtable.2024.2.0.nupkg.sha512"
+ },
+ "Fantasy-Net.Tools.ExporterNetworkProtocol/2024.2.24": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-gKbHZBgiTuERq4LCgctChvpYJGVoUbGNHoXq9x7Yz7aUoU7/M6DjuGdZE7XnsyNioddz1Gh992900RUAPwSpjQ==",
+ "path": "fantasy-net.tools.exporternetworkprotocol/2024.2.24",
+ "hashPath": "fantasy-net.tools.exporternetworkprotocol.2024.2.24.nupkg.sha512"
+ },
+ "Microsoft.Extensions.DependencyInjection.Abstractions/8.0.2": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-3iE7UF7MQkCv1cxzCahz+Y/guQbTqieyxyaWKhrRO91itI9cOKO76OHeQDahqG4MmW5umr3CcCvGmK92lWNlbg==",
+ "path": "microsoft.extensions.dependencyinjection.abstractions/8.0.2",
+ "hashPath": "microsoft.extensions.dependencyinjection.abstractions.8.0.2.nupkg.sha512"
+ },
+ "Microsoft.Extensions.Logging.Abstractions/8.0.2": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-nroMDjS7hNBPtkZqVBbSiQaQjWRDxITI8Y7XnDs97rqG3EbzVTNLZQf7bIeUJcaHOV8bca47s1Uxq94+2oGdxA==",
+ "path": "microsoft.extensions.logging.abstractions/8.0.2",
+ "hashPath": "microsoft.extensions.logging.abstractions.8.0.2.nupkg.sha512"
+ },
+ "Microsoft.IdentityModel.Abstractions/8.6.1": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-OwmvCXYTttrxV3qT7QKDkoQP4/DB4RWjTwEqV+dNfb2opHn29WGDzoF+r4BVFQVy+BDYMhRlhIp8g3jSyJd+4Q==",
+ "path": "microsoft.identitymodel.abstractions/8.6.1",
+ "hashPath": "microsoft.identitymodel.abstractions.8.6.1.nupkg.sha512"
+ },
+ "Microsoft.IdentityModel.JsonWebTokens/8.6.1": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-CAu9DWsPZVtnyE3bOJ83rlPWpahY37sP/0bIOdRlxS90W88zSI4V3FyoCDlXxV8+gloT+a247pwPXfSNjYyAxw==",
+ "path": "microsoft.identitymodel.jsonwebtokens/8.6.1",
+ "hashPath": "microsoft.identitymodel.jsonwebtokens.8.6.1.nupkg.sha512"
+ },
+ "Microsoft.IdentityModel.Logging/8.6.1": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-BdWlVgJYdmcR9TMUOhaZ3vJyaRO7zr7xgK+cRT4R2q59Xl7JMmTB4ctb/VOsyDhxXb497jDNNvLwldp+2ZVBEg==",
+ "path": "microsoft.identitymodel.logging/8.6.1",
+ "hashPath": "microsoft.identitymodel.logging.8.6.1.nupkg.sha512"
+ },
+ "Microsoft.IdentityModel.Tokens/8.6.1": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-FvED2com8LIFl9yFXneiX0uxNf9fuf8jKDFcvxC93qXOAfFa8fdLkCiur1vWF+PvgQHhsHVBe6CtDZHzsN8nCQ==",
+ "path": "microsoft.identitymodel.tokens/8.6.1",
+ "hashPath": "microsoft.identitymodel.tokens.8.6.1.nupkg.sha512"
+ },
+ "Microsoft.NETCore.Platforms/5.0.0": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-VyPlqzH2wavqquTcYpkIIAQ6WdenuKoFN0BdYBbCWsclXacSOHNQn66Gt4z5NBqEYW0FAPm5rlvki9ZiCij5xQ==",
+ "path": "microsoft.netcore.platforms/5.0.0",
+ "hashPath": "microsoft.netcore.platforms.5.0.0.nupkg.sha512"
+ },
+ "Microsoft.Win32.Registry/5.0.0": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-dDoKi0PnDz31yAyETfRntsLArTlVAVzUzCIvvEDsDsucrl33Dl8pIJG06ePTJTI3tGpeyHS9Cq7Foc/s4EeKcg==",
+ "path": "microsoft.win32.registry/5.0.0",
+ "hashPath": "microsoft.win32.registry.5.0.0.nupkg.sha512"
+ },
+ "MongoDB.Bson/3.1.0": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-3dhaZhz18B5vUoEP13o2j8A6zQfkHdZhwBvLZEjDJum4BTLLv1/Z8bt25UQEtpqvYwLgde4R6ekWZ7XAYUMxuw==",
+ "path": "mongodb.bson/3.1.0",
+ "hashPath": "mongodb.bson.3.1.0.nupkg.sha512"
+ },
+ "MongoDB.Driver/3.1.0": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-+O7lKaIl7VUHptE0hqTd7UY1G5KDp/o8S4upG7YL4uChMNKD/U6tz9i17nMGHaD/L2AiPLgaJcaDe2XACsegGA==",
+ "path": "mongodb.driver/3.1.0",
+ "hashPath": "mongodb.driver.3.1.0.nupkg.sha512"
+ },
+ "Newtonsoft.Json/13.0.3": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-HrC5BXdl00IP9zeV+0Z848QWPAoCr9P3bDEZguI+gkLcBKAOxix/tLEAAHC+UvDNPv4a2d18lOReHMOagPa+zQ==",
+ "path": "newtonsoft.json/13.0.3",
+ "hashPath": "newtonsoft.json.13.0.3.nupkg.sha512"
+ },
+ "NLog/5.3.4": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-gLy7+O1hEYJXIlcTr1/VWjGXrZTQFZzYNO18IWasD64pNwz0BreV+nHLxWKXWZzERRzoKnsk2XYtwLkTVk7J1A==",
+ "path": "nlog/5.3.4",
+ "hashPath": "nlog.5.3.4.nupkg.sha512"
+ },
+ "protobuf-net/3.2.45": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-5UZ/ukUHcGbFSl7vNMrHsfjqdxusdd9w7w0fCEXzf3UUtsrGNVCzV5SmF+sCHAbnRV2qPcD1ixiDP7Aj8lX/HA==",
+ "path": "protobuf-net/3.2.45",
+ "hashPath": "protobuf-net.3.2.45.nupkg.sha512"
+ },
+ "protobuf-net.Core/3.2.45": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-PMWatW2NrT1uTXD7etJ4VdQ0wWZLFrIfdRGppD2QX7nzZ0+kIzqhq551u6ZiXJHWJgG4hWFEkSnUnt2aB6posg==",
+ "path": "protobuf-net.core/3.2.45",
+ "hashPath": "protobuf-net.core.3.2.45.nupkg.sha512"
+ },
+ "SharpCompress/0.30.1": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-XqD4TpfyYGa7QTPzaGlMVbcecKnXy4YmYLDWrU+JIj7IuRNl7DH2END+Ll7ekWIY8o3dAMWLFDE1xdhfIWD1nw==",
+ "path": "sharpcompress/0.30.1",
+ "hashPath": "sharpcompress.0.30.1.nupkg.sha512"
+ },
+ "Snappier/1.0.0": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-rFtK2KEI9hIe8gtx3a0YDXdHOpedIf9wYCEYtBEmtlyiWVX3XlCNV03JrmmAi/Cdfn7dxK+k0sjjcLv4fpHnqA==",
+ "path": "snappier/1.0.0",
+ "hashPath": "snappier.1.0.0.nupkg.sha512"
+ },
+ "System.Buffers/4.5.1": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-Rw7ijyl1qqRS0YQD/WycNst8hUUMgrMH4FCn1nNm27M4VxchZ1js3fVjQaANHO5f3sN4isvP4a+Met9Y4YomAg==",
+ "path": "system.buffers/4.5.1",
+ "hashPath": "system.buffers.4.5.1.nupkg.sha512"
+ },
+ "System.Collections.Immutable/7.0.0": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-dQPcs0U1IKnBdRDBkrCTi1FoajSTBzLcVTpjO4MBCMC7f4pDOIPzgBoX8JjG7X6uZRJ8EBxsi8+DR1JuwjnzOQ==",
+ "path": "system.collections.immutable/7.0.0",
+ "hashPath": "system.collections.immutable.7.0.0.nupkg.sha512"
+ },
+ "System.Formats.Asn1/5.0.0": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-MTvUIktmemNB+El0Fgw9egyqT9AYSIk6DTJeoDSpc3GIHxHCMo8COqkWT1mptX5tZ1SlQ6HJZ0OsSvMth1c12w==",
+ "path": "system.formats.asn1/5.0.0",
+ "hashPath": "system.formats.asn1.5.0.0.nupkg.sha512"
+ },
+ "System.IdentityModel.Tokens.Jwt/8.6.1": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-EXL1Tj+pizswtHHPiQyNumrTo8XOLX7SoTm7Bz00/DyiIoG2H/kQItoajSvr1MYtvDNXveqULsoWDoJFI3aHzQ==",
+ "path": "system.identitymodel.tokens.jwt/8.6.1",
+ "hashPath": "system.identitymodel.tokens.jwt.8.6.1.nupkg.sha512"
+ },
+ "System.Memory/4.5.5": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-XIWiDvKPXaTveaB7HVganDlOCRoj03l+jrwNvcge/t8vhGYKvqV+dMv6G4SAX2NoNmN0wZfVPTAlFwZcZvVOUw==",
+ "path": "system.memory/4.5.5",
+ "hashPath": "system.memory.4.5.5.nupkg.sha512"
+ },
+ "System.Runtime.CompilerServices.Unsafe/5.0.0": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-ZD9TMpsmYJLrxbbmdvhwt9YEgG5WntEnZ/d1eH8JBX9LBp+Ju8BSBhUGbZMNVHHomWo2KVImJhTDl2hIgw/6MA==",
+ "path": "system.runtime.compilerservices.unsafe/5.0.0",
+ "hashPath": "system.runtime.compilerservices.unsafe.5.0.0.nupkg.sha512"
+ },
+ "System.Security.AccessControl/5.0.0": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-dagJ1mHZO3Ani8GH0PHpPEe/oYO+rVdbQjvjJkBRNQkX4t0r1iaeGn8+/ybkSLEan3/slM0t59SVdHzuHf2jmw==",
+ "path": "system.security.accesscontrol/5.0.0",
+ "hashPath": "system.security.accesscontrol.5.0.0.nupkg.sha512"
+ },
+ "System.Security.Cryptography.Cng/5.0.0": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-jIMXsKn94T9JY7PvPq/tMfqa6GAaHpElRDpmG+SuL+D3+sTw2M8VhnibKnN8Tq+4JqbPJ/f+BwtLeDMEnzAvRg==",
+ "path": "system.security.cryptography.cng/5.0.0",
+ "hashPath": "system.security.cryptography.cng.5.0.0.nupkg.sha512"
+ },
+ "System.Security.Principal.Windows/5.0.0": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-t0MGLukB5WAVU9bO3MGzvlGnyJPgUlcwerXn1kzBRjwLKixT96XV0Uza41W49gVd8zEMFu9vQEFlv0IOrytICA==",
+ "path": "system.security.principal.windows/5.0.0",
+ "hashPath": "system.security.principal.windows.5.0.0.nupkg.sha512"
+ },
+ "ZstdSharp.Port/0.7.3": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-U9Ix4l4cl58Kzz1rJzj5hoVTjmbx1qGMwzAcbv1j/d3NzrFaESIurQyg+ow4mivCgkE3S413y+U9k4WdnEIkRA==",
+ "path": "zstdsharp.port/0.7.3",
+ "hashPath": "zstdsharp.port.0.7.3.nupkg.sha512"
+ },
+ "APlugins/1.0.0": {
+ "type": "project",
+ "serviceable": false,
+ "sha512": ""
+ },
+ "Entity/1.0.0": {
+ "type": "project",
+ "serviceable": false,
+ "sha512": ""
+ },
+ "Hotfix/1.0.0": {
+ "type": "project",
+ "serviceable": false,
+ "sha512": ""
+ }
+ }
+}
\ No newline at end of file
diff --git a/GameServer/Bin/Release/net9.0/Main.dll b/GameServer/Bin/Release/net9.0/Main.dll
new file mode 100644
index 00000000..8615b5fc
Binary files /dev/null and b/GameServer/Bin/Release/net9.0/Main.dll differ
diff --git a/GameServer/Bin/Release/net9.0/Main.exe b/GameServer/Bin/Release/net9.0/Main.exe
new file mode 100644
index 00000000..df244ea1
Binary files /dev/null and b/GameServer/Bin/Release/net9.0/Main.exe differ
diff --git a/GameServer/Bin/Release/net9.0/Main.pdb b/GameServer/Bin/Release/net9.0/Main.pdb
new file mode 100644
index 00000000..5807ecc4
Binary files /dev/null and b/GameServer/Bin/Release/net9.0/Main.pdb differ
diff --git a/GameServer/Bin/Release/net9.0/Main.runtimeconfig.json b/GameServer/Bin/Release/net9.0/Main.runtimeconfig.json
new file mode 100644
index 00000000..2e596832
--- /dev/null
+++ b/GameServer/Bin/Release/net9.0/Main.runtimeconfig.json
@@ -0,0 +1,19 @@
+{
+ "runtimeOptions": {
+ "tfm": "net9.0",
+ "frameworks": [
+ {
+ "name": "Microsoft.NETCore.App",
+ "version": "9.0.0"
+ },
+ {
+ "name": "Microsoft.AspNetCore.App",
+ "version": "9.0.0"
+ }
+ ],
+ "configProperties": {
+ "System.Reflection.Metadata.MetadataUpdater.IsSupported": false,
+ "System.Runtime.Serialization.EnableUnsafeBinaryFormatterSerialization": false
+ }
+ }
+}
\ No newline at end of file
diff --git a/GameServer/Bin/Release/net9.0/Microsoft.IdentityModel.Abstractions.dll b/GameServer/Bin/Release/net9.0/Microsoft.IdentityModel.Abstractions.dll
new file mode 100644
index 00000000..54acaf95
Binary files /dev/null and b/GameServer/Bin/Release/net9.0/Microsoft.IdentityModel.Abstractions.dll differ
diff --git a/GameServer/Bin/Release/net9.0/Microsoft.IdentityModel.JsonWebTokens.dll b/GameServer/Bin/Release/net9.0/Microsoft.IdentityModel.JsonWebTokens.dll
new file mode 100644
index 00000000..fce94dc9
Binary files /dev/null and b/GameServer/Bin/Release/net9.0/Microsoft.IdentityModel.JsonWebTokens.dll differ
diff --git a/GameServer/Bin/Release/net9.0/Microsoft.IdentityModel.Logging.dll b/GameServer/Bin/Release/net9.0/Microsoft.IdentityModel.Logging.dll
new file mode 100644
index 00000000..e08a8df6
Binary files /dev/null and b/GameServer/Bin/Release/net9.0/Microsoft.IdentityModel.Logging.dll differ
diff --git a/GameServer/Bin/Release/net9.0/Microsoft.IdentityModel.Tokens.dll b/GameServer/Bin/Release/net9.0/Microsoft.IdentityModel.Tokens.dll
new file mode 100644
index 00000000..b10d9bc7
Binary files /dev/null and b/GameServer/Bin/Release/net9.0/Microsoft.IdentityModel.Tokens.dll differ
diff --git a/GameServer/Bin/Release/net9.0/MongoDB.Bson.dll b/GameServer/Bin/Release/net9.0/MongoDB.Bson.dll
new file mode 100644
index 00000000..c604c81a
Binary files /dev/null and b/GameServer/Bin/Release/net9.0/MongoDB.Bson.dll differ
diff --git a/GameServer/Bin/Release/net9.0/MongoDB.Driver.dll b/GameServer/Bin/Release/net9.0/MongoDB.Driver.dll
new file mode 100644
index 00000000..1308944b
Binary files /dev/null and b/GameServer/Bin/Release/net9.0/MongoDB.Driver.dll differ
diff --git a/GameServer/Bin/Release/net9.0/NLog.config b/GameServer/Bin/Release/net9.0/NLog.config
new file mode 100644
index 00000000..4df5ea1b
--- /dev/null
+++ b/GameServer/Bin/Release/net9.0/NLog.config
@@ -0,0 +1,91 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/GameServer/Bin/Release/net9.0/NLog.dll b/GameServer/Bin/Release/net9.0/NLog.dll
new file mode 100644
index 00000000..49604e19
Binary files /dev/null and b/GameServer/Bin/Release/net9.0/NLog.dll differ
diff --git a/GameServer/Bin/Release/net9.0/NLog.xsd b/GameServer/Bin/Release/net9.0/NLog.xsd
new file mode 100644
index 00000000..63c9a0cc
--- /dev/null
+++ b/GameServer/Bin/Release/net9.0/NLog.xsd
@@ -0,0 +1,3483 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Watch config file for changes and reload automatically.
+
+
+
+
+ Print internal NLog messages to the console. Default value is: false
+
+
+
+
+ Print internal NLog messages to the console error output. Default value is: false
+
+
+
+
+ Write internal NLog messages to the specified file.
+
+
+
+
+ Log level threshold for internal log messages. Default value is: Info.
+
+
+
+
+ Global log level threshold for application log messages. Messages below this level won't be logged.
+
+
+
+
+ Throw an exception when there is an internal error. Default value is: false. Not recommend to set to true in production!
+
+
+
+
+ Throw an exception when there is a configuration error. If not set, determined by throwExceptions.
+
+
+
+
+ Gets or sets a value indicating whether Variables should be kept on configuration reload. Default value is: false.
+
+
+
+
+ Write internal NLog messages to the System.Diagnostics.Trace. Default value is: false.
+
+
+
+
+ Write timestamps for internal NLog messages. Default value is: true.
+
+
+
+
+ Use InvariantCulture as default culture instead of CurrentCulture. Default value is: false.
+
+
+
+
+ Perform message template parsing and formatting of LogEvent messages (true = Always, false = Never, empty = Auto Detect). Default value is: empty.
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Make all targets within this section asynchronous (creates additional threads but the calling thread isn't blocked by any target writes).
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Prefix for targets/layout renderers/filters/conditions loaded from this assembly.
+
+
+
+
+ Load NLog extensions from the specified file (*.dll)
+
+
+
+
+ Load NLog extensions from the specified assembly. Assembly name should be fully qualified.
+
+
+
+
+
+
+
+
+
+ Filter on the name of the logger. May include wildcard characters ('*' or '?').
+
+
+
+
+ Comma separated list of levels that this rule matches.
+
+
+
+
+ Minimum level that this rule matches.
+
+
+
+
+ Maximum level that this rule matches.
+
+
+
+
+ Level that this rule matches.
+
+
+
+
+ Comma separated list of target names.
+
+
+
+
+ Ignore further rules if this one matches.
+
+
+
+
+ Enable this rule. Note: disabled rules aren't available from the API.
+
+
+
+
+ Rule identifier to allow rule lookup with Configuration.FindRuleByName and Configuration.RemoveRuleByName.
+
+
+
+
+ Loggers matching will be restricted to specified minimum level for following rules.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Default action if none of the filters match.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Name of the file to be included. You could use * wildcard. The name is relative to the name of the current config file.
+
+
+
+
+ Ignore any errors in the include file.
+
+
+
+
+
+
+
+ Variable value. Note, the 'value' attribute has precedence over this one.
+
+
+
+
+
+ Variable name.
+
+
+
+
+ Variable value.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Name of the target.
+
+
+
+
+ Action to be taken when the lazy writer thread request queue count exceeds the set limit.
+
+
+
+
+ Limit on the number of requests in the lazy writer thread request queue.
+
+
+
+
+ Number of log events that should be processed in a batch by the lazy writer thread.
+
+
+
+
+ Whether to use the locking queue, instead of a lock-free concurrent queue
+
+
+
+
+ Number of batches of P:NLog.Targets.Wrappers.AsyncTargetWrapper.BatchSize to write before yielding into P:NLog.Targets.Wrappers.AsyncTargetWrapper.TimeToSleepBetweenBatches
+
+
+
+
+ Time in milliseconds to sleep between batches. (1 or less means trigger on new activity)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Name of the target.
+
+
+
+
+ Delay the flush until the LogEvent has been confirmed as written
+
+
+
+
+ Condition expression. Log events who meet this condition will cause a flush on the wrapped target.
+
+
+
+
+ Only flush when LogEvent matches condition. Ignore explicit-flush, config-reload-flush and shutdown-flush
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Name of the target.
+
+
+
+
+ Number of log events to be buffered.
+
+
+
+
+ Action to take if the buffer overflows.
+
+
+
+
+ Timeout (in milliseconds) after which the contents of buffer will be flushed if there's no write in the specified period of time. Use -1 to disable timed flushes.
+
+
+
+
+ Indicates whether to use sliding timeout.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Name of the target.
+
+
+
+
+ Separator for T:NLog.ScopeContext operation-states-stack.
+
+
+
+
+ Stack separator for log4j:NDC in output from T:NLog.ScopeContext nested context.
+
+
+
+
+ Renderer for log4j:event logger-xml-attribute (Default ${logger})
+
+
+
+
+ Whether to include the contents of the T:NLog.ScopeContext properties-dictionary.
+
+
+
+
+ Whether to include log4j:NDC in output from T:NLog.ScopeContext nested context.
+
+
+
+
+ Indicates whether to include source info (file name and line number) in the information sent over the network.
+
+
+
+
+ Whether to include log4j:NDC in output from T:NLog.ScopeContext nested context.
+
+
+
+
+ Option to include all properties from the log events
+
+
+
+
+ Indicates whether to include call site (class and method name) in the information sent over the network.
+
+
+
+
+ AppInfo field. By default it's the friendly name of the current AppDomain.
+
+
+
+
+ Instance of T:NLog.Layouts.Log4JXmlEventLayout that is used to format log messages.
+
+
+
+
+ Indicates whether to include NLog-specific extensions to log4j schema.
+
+
+
+
+ Action that should be taken, when more connections than P:NLog.Targets.NetworkTarget.MaxConnections.
+
+
+
+
+ SSL/TLS protocols. Default no SSL/TLS is used. Currently only implemented for TCP.
+
+
+
+
+ Action that should be taken, when more pending messages than P:NLog.Targets.NetworkTarget.MaxQueueSize.
+
+
+
+
+ Action that should be taken if the message is larger than P:NLog.Targets.NetworkTarget.MaxMessageSize
+
+
+
+
+ Maximum queue size for a single connection. Requires P:NLog.Targets.NetworkTarget.KeepConnection = true
+
+
+
+
+ Network address.
+
+
+
+
+ Indicates whether to keep connection open whenever possible.
+
+
+
+
+ The number of seconds a connection will remain idle before the first keep-alive probe is sent
+
+
+
+
+ Size of the connection cache (number of connections which are kept alive). Requires P:NLog.Targets.NetworkTarget.KeepConnection = true
+
+
+
+
+ Maximum simultaneous connections. Requires P:NLog.Targets.NetworkTarget.KeepConnection = false
+
+
+
+
+ Type of compression for protocol payload. Useful for UDP where datagram max-size is 8192 bytes.
+
+
+
+
+ Skip compression when protocol payload is below limit to reduce overhead in cpu-usage and additional headers
+
+
+
+
+ Maximum message size in bytes. On limit breach then P:NLog.Targets.NetworkTarget.OnOverflow action is activated.
+
+
+
+
+ Encoding to be used.
+
+
+
+
+ End of line value if a newline is appended at the end of log message P:NLog.Targets.NetworkTarget.NewLine.
+
+
+
+
+ Indicates whether to append newline at the end of log message.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Viewer parameter name.
+
+
+
+
+ Layout that should be use to calculate the value for the parameter.
+
+
+
+
+ Whether an attribute with empty value should be included in the output
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Name of the target.
+
+
+
+
+ Text to be rendered.
+
+
+
+
+ Header.
+
+
+
+
+ Footer.
+
+
+
+
+ Indicates whether to auto-check if the console is available. - Disables console writing if Environment.UserInteractive = False (Windows Service) - Disables console writing if Console Standard Input is not available (Non-Console-App)
+
+
+
+
+ Enables output using ANSI Color Codes
+
+
+
+
+ The encoding for writing messages to the T:System.Console.
+
+
+
+
+ Indicates whether to send the log messages to the standard error instead of the standard output.
+
+
+
+
+ Indicates whether to auto-flush after M:System.Console.WriteLine
+
+
+
+
+ Indicates whether to auto-check if the console has been redirected to file - Disables coloring logic when System.Console.IsOutputRedirected = true
+
+
+
+
+ Indicates whether to use default row highlighting rules.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Background color.
+
+
+
+
+ Condition that must be met in order to set the specified foreground and background color.
+
+
+
+
+ Foreground color.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Background color.
+
+
+
+
+ Compile the P:NLog.Targets.ConsoleWordHighlightingRule.Regex? This can improve the performance, but at the costs of more memory usage. If false, the Regex Cache is used.
+
+
+
+
+ Condition that must be met before scanning the row for highlight of words
+
+
+
+
+ Foreground color.
+
+
+
+
+ Indicates whether to ignore case when comparing texts.
+
+
+
+
+ Regular expression to be matched. You must specify either text or regex.
+
+
+
+
+ Text to be matched. You must specify either text or regex.
+
+
+
+
+ Indicates whether to match whole words only.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Name of the target.
+
+
+
+
+ Text to be rendered.
+
+
+
+
+ Header.
+
+
+
+
+ Footer.
+
+
+
+
+ Indicates whether to auto-flush after M:System.Console.WriteLine
+
+
+
+
+ Indicates whether to auto-check if the console is available - Disables console writing if Environment.UserInteractive = False (Windows Service) - Disables console writing if Console Standard Input is not available (Non-Console-App)
+
+
+
+
+ The encoding for writing messages to the T:System.Console.
+
+
+
+
+ Indicates whether to send the log messages to the standard error instead of the standard output.
+
+
+
+
+ Whether to activate internal buffering to allow batch writing, instead of using M:System.Console.WriteLine
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Name of the target.
+
+
+
+
+ Database user name. If the ConnectionString is not provided this value will be used to construct the "User ID=" part of the connection string.
+
+
+
+
+ Database password. If the ConnectionString is not provided this value will be used to construct the "Password=" part of the connection string.
+
+
+
+
+ Database name. If the ConnectionString is not provided this value will be used to construct the "Database=" part of the connection string.
+
+
+
+
+ Name of the connection string (as specified in <connectionStrings> configuration section.
+
+
+
+
+ Database host name. If the ConnectionString is not provided this value will be used to construct the "Server=" part of the connection string.
+
+
+
+
+ Indicates whether to keep the database connection open between the log events.
+
+
+
+
+ Name of the database provider.
+
+
+
+
+ Connection string. When provided, it overrides the values specified in DBHost, DBUserName, DBPassword, DBDatabase.
+
+
+
+
+ Connection string using for installation and uninstallation. If not provided, regular ConnectionString is being used.
+
+
+
+
+ Configures isolated transaction batch writing. If supported by the database, then it will improve insert performance.
+
+
+
+
+ Text of the SQL command to be run on each log level.
+
+
+
+
+ Type of the SQL command to be run on each log level.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Convert format of the property value
+
+
+
+
+ Culture used for parsing property string-value for type-conversion
+
+
+
+
+ Value to assign on the object-property
+
+
+
+
+ Name for the object-property
+
+
+
+
+ Type of the object-property
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Type of the command.
+
+
+
+
+ Connection string to run the command against. If not provided, connection string from the target is used.
+
+
+
+
+ Indicates whether to ignore failures.
+
+
+
+
+ Command text.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Database parameter name.
+
+
+
+
+ Layout that should be use to calculate the value for the parameter.
+
+
+
+
+ Database parameter DbType.
+
+
+
+
+ Database parameter size.
+
+
+
+
+ Database parameter precision.
+
+
+
+
+ Database parameter scale.
+
+
+
+
+ Type of the parameter.
+
+
+
+
+ Fallback value when result value is not available
+
+
+
+
+ Convert format of the database parameter value.
+
+
+
+
+ Culture used for parsing parameter string-value for type-conversion
+
+
+
+
+ Whether empty value should translate into DbNull. Requires database column to allow NULL values.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Name of the target.
+
+
+
+
+ Text to be rendered.
+
+
+
+
+ Header.
+
+
+
+
+ Footer.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Name of the target.
+
+
+
+
+ Text to be rendered.
+
+
+
+
+ Header.
+
+
+
+
+ Footer.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Name of the target.
+
+
+
+
+ Layout used to format log messages.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Name of the target.
+
+
+
+
+ Layout used to format log messages.
+
+
+
+
+ Layout that renders event Category.
+
+
+
+
+ Optional entry type. When not set, or when not convertible to T:System.Diagnostics.EventLogEntryType then determined by T:NLog.LogLevel
+
+
+
+
+ Layout that renders event ID.
+
+
+
+
+ Name of the Event Log to write to. This can be System, Application or any user-defined name.
+
+
+
+
+ Name of the machine on which Event Log service is running.
+
+
+
+
+ Maximum Event log size in kilobytes.
+
+
+
+
+ Message length limit to write to the Event Log.
+
+
+
+
+ Value to be used as the event Source.
+
+
+
+
+ Action to take if the message is larger than the P:NLog.Targets.EventLogTarget.MaxMessageLength option.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Name of the target.
+
+
+
+
+ Indicates whether to return to the first target after any successful write.
+
+
+
+
+ Whether to enable batching, but fallback will be handled individually
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Name of the target.
+
+
+
+
+ Name of the file to write to.
+
+
+
+
+ Text to be rendered.
+
+
+
+
+ Header.
+
+
+
+
+ Footer.
+
+
+
+
+ Indicates whether the footer should be written only when the file is archived.
+
+
+
+
+ Maximum number of archive files that should be kept.
+
+
+
+
+ Maximum days of archive files that should be kept.
+
+
+
+
+ Value of the file size threshold to archive old log file on startup.
+
+
+
+
+ Indicates whether to archive old log file on startup.
+
+
+
+
+ Indicates whether to compress archive files into the zip archive format.
+
+
+
+
+ Name of the file to be used for an archive.
+
+
+
+
+ Is the P:NLog.Targets.FileTarget.ArchiveFileName an absolute or relative path?
+
+
+
+
+ Indicates whether to automatically archive log files every time the specified time passes.
+
+
+
+
+ Value specifying the date format to use when archiving files.
+
+
+
+
+ Size in bytes above which log files will be automatically archived.
+
+
+
+
+ Way file archives are numbered.
+
+
+
+
+ Indicates whether to create directories if they do not exist.
+
+
+
+
+ Indicates whether file creation calls should be synchronized by a system global mutex.
+
+
+
+
+ Gets or set a value indicating whether a managed file stream is forced, instead of using the native implementation.
+
+
+
+
+ Is the P:NLog.Targets.FileTarget.FileName an absolute or relative path?
+
+
+
+
+ File attributes (Windows only).
+
+
+
+
+ Cleanup invalid values in a filename, e.g. slashes in a filename. If set to true, this can impact the performance of massive writes. If set to false, nothing gets written when the filename is wrong.
+
+
+
+
+ Indicates whether to write BOM (byte order mark) in created files. Defaults to true for UTF-16 and UTF-32
+
+
+
+
+ Indicates whether to enable log file(s) to be deleted.
+
+
+
+
+ Indicates whether to delete old log file on startup.
+
+
+
+
+ File encoding.
+
+
+
+
+ Indicates whether to replace file contents on each write instead of appending log message at the end.
+
+
+
+
+ Line ending mode.
+
+
+
+
+ Number of times the write is appended on the file before NLog discards the log message.
+
+
+
+
+ Delay in milliseconds to wait before attempting to write to the file again.
+
+
+
+
+ Maximum number of seconds before open files are flushed. Zero or negative means disabled.
+
+
+
+
+ Maximum number of seconds that files are kept open. Zero or negative means disabled.
+
+
+
+
+ Indicates whether concurrent writes to the log file by multiple processes on different network hosts.
+
+
+
+
+ Log file buffer size in bytes.
+
+
+
+
+ Indicates whether to automatically flush the file buffers after each log message.
+
+
+
+
+ Indicates whether to keep log file open instead of opening and closing it on each logging event.
+
+
+
+
+ Indicates whether concurrent writes to the log file by multiple processes on the same host.
+
+
+
+
+ Whether or not this target should just discard all data that its asked to write. Mostly used for when testing NLog Stack except final write
+
+
+
+
+ Number of files to be kept open. Setting this to a higher value may improve performance in a situation where a single File target is writing to many files (such as splitting by level or by logger).
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Name of the target.
+
+
+
+
+ Condition expression. Log events who meet this condition will be forwarded to the wrapped target.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Name of the target.
+
+
+
+
+ Identifier to perform group-by
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Name of the target.
+
+
+
+
+ Windows domain name to change context to.
+
+
+
+
+ Required impersonation level.
+
+
+
+
+ Type of the logon provider.
+
+
+
+
+ Logon Type.
+
+
+
+
+ User account password.
+
+
+
+
+ Indicates whether to revert to the credentials of the process instead of impersonating another user.
+
+
+
+
+ Username to change context to.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Name of the target.
+
+
+
+
+ Interval in which messages will be written up to the P:NLog.Targets.Wrappers.LimitingTargetWrapper.MessageLimit number of messages.
+
+
+
+
+ Maximum allowed number of messages written per P:NLog.Targets.Wrappers.LimitingTargetWrapper.Interval.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Name of the target.
+
+
+
+
+ Text to be rendered.
+
+
+
+
+ Header.
+
+
+
+
+ Footer.
+
+
+
+
+ Indicates whether NewLine characters in the body should be replaced with tags.
+
+
+
+
+ Priority used for sending mails.
+
+
+
+
+ Encoding to be used for sending e-mail.
+
+
+
+
+ BCC email addresses separated by semicolons (e.g. john@domain.com;jane@domain.com).
+
+
+
+
+ CC email addresses separated by semicolons (e.g. john@domain.com;jane@domain.com).
+
+
+
+
+ Indicates whether to add new lines between log entries.
+
+
+
+
+ Indicates whether to send message as HTML instead of plain text.
+
+
+
+
+ Sender's email address (e.g. joe@domain.com).
+
+
+
+
+ Mail message body (repeated for each log message send in one mail).
+
+
+
+
+ Mail subject.
+
+
+
+
+ Recipients' email addresses separated by semicolons (e.g. john@domain.com;jane@domain.com).
+
+
+
+
+ Specifies how outgoing email messages will be handled.
+
+
+
+
+ SMTP Server to be used for sending.
+
+
+
+
+ SMTP Authentication mode.
+
+
+
+
+ Username used to connect to SMTP server (used when SmtpAuthentication is set to "basic").
+
+
+
+
+ Password used to authenticate against SMTP server (used when SmtpAuthentication is set to "basic").
+
+
+
+
+ Indicates whether SSL (secure sockets layer) should be used when communicating with SMTP server.
+
+
+
+
+ Port number that SMTP Server is listening on.
+
+
+
+
+ Indicates whether the default Settings from System.Net.MailSettings should be used.
+
+
+
+
+ Folder where applications save mail messages to be processed by the local SMTP server.
+
+
+
+
+ Indicates the SMTP client timeout.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Name of the target.
+
+
+
+
+ Text to be rendered.
+
+
+
+
+ Header.
+
+
+
+
+ Footer.
+
+
+
+
+ Max number of items to have in memory
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Name of the target.
+
+
+
+
+ Class name.
+
+
+
+
+ Method name. The method must be public and static. Use the AssemblyQualifiedName , https://msdn.microsoft.com/en-us/library/system.type.assemblyqualifiedname(v=vs.110).aspx e.g.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Name of the parameter.
+
+
+
+
+ Layout that should be use to calculate the value for the parameter.
+
+
+
+
+ Fallback value when result value is not available
+
+
+
+
+ Type of the parameter.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Name of the target.
+
+
+
+
+ Layout used to format log messages.
+
+
+
+
+ SSL/TLS protocols. Default no SSL/TLS is used. Currently only implemented for TCP.
+
+
+
+
+ Action that should be taken, when more pending messages than P:NLog.Targets.NetworkTarget.MaxQueueSize.
+
+
+
+
+ Action that should be taken if the message is larger than P:NLog.Targets.NetworkTarget.MaxMessageSize
+
+
+
+
+ Maximum queue size for a single connection. Requires P:NLog.Targets.NetworkTarget.KeepConnection = true
+
+
+
+
+ Action that should be taken, when more connections than P:NLog.Targets.NetworkTarget.MaxConnections.
+
+
+
+
+ Indicates whether to keep connection open whenever possible.
+
+
+
+
+ The number of seconds a connection will remain idle before the first keep-alive probe is sent
+
+
+
+
+ Size of the connection cache (number of connections which are kept alive). Requires P:NLog.Targets.NetworkTarget.KeepConnection = true
+
+
+
+
+ Network address.
+
+
+
+
+ Maximum simultaneous connections. Requires P:NLog.Targets.NetworkTarget.KeepConnection = false
+
+
+
+
+ Type of compression for protocol payload. Useful for UDP where datagram max-size is 8192 bytes.
+
+
+
+
+ Skip compression when protocol payload is below limit to reduce overhead in cpu-usage and additional headers
+
+
+
+
+ Maximum message size in bytes. On limit breach then P:NLog.Targets.NetworkTarget.OnOverflow action is activated.
+
+
+
+
+ Encoding to be used.
+
+
+
+
+ End of line value if a newline is appended at the end of log message P:NLog.Targets.NetworkTarget.NewLine.
+
+
+
+
+ Indicates whether to append newline at the end of log message.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Name of the target.
+
+
+
+
+ Separator for T:NLog.ScopeContext operation-states-stack.
+
+
+
+
+ Stack separator for log4j:NDC in output from T:NLog.ScopeContext nested context.
+
+
+
+
+ Renderer for log4j:event logger-xml-attribute (Default ${logger})
+
+
+
+
+ Whether to include the contents of the T:NLog.ScopeContext properties-dictionary.
+
+
+
+
+ Whether to include log4j:NDC in output from T:NLog.ScopeContext nested context.
+
+
+
+
+ Indicates whether to include source info (file name and line number) in the information sent over the network.
+
+
+
+
+ Whether to include log4j:NDC in output from T:NLog.ScopeContext nested context.
+
+
+
+
+ Option to include all properties from the log events
+
+
+
+
+ Indicates whether to include call site (class and method name) in the information sent over the network.
+
+
+
+
+ AppInfo field. By default it's the friendly name of the current AppDomain.
+
+
+
+
+ Instance of T:NLog.Layouts.Log4JXmlEventLayout that is used to format log messages.
+
+
+
+
+ Indicates whether to include NLog-specific extensions to log4j schema.
+
+
+
+
+ Action that should be taken, when more connections than P:NLog.Targets.NetworkTarget.MaxConnections.
+
+
+
+
+ SSL/TLS protocols. Default no SSL/TLS is used. Currently only implemented for TCP.
+
+
+
+
+ Action that should be taken, when more pending messages than P:NLog.Targets.NetworkTarget.MaxQueueSize.
+
+
+
+
+ Action that should be taken if the message is larger than P:NLog.Targets.NetworkTarget.MaxMessageSize
+
+
+
+
+ Maximum queue size for a single connection. Requires P:NLog.Targets.NetworkTarget.KeepConnection = true
+
+
+
+
+ Network address.
+
+
+
+
+ Indicates whether to keep connection open whenever possible.
+
+
+
+
+ The number of seconds a connection will remain idle before the first keep-alive probe is sent
+
+
+
+
+ Size of the connection cache (number of connections which are kept alive). Requires P:NLog.Targets.NetworkTarget.KeepConnection = true
+
+
+
+
+ Maximum simultaneous connections. Requires P:NLog.Targets.NetworkTarget.KeepConnection = false
+
+
+
+
+ Type of compression for protocol payload. Useful for UDP where datagram max-size is 8192 bytes.
+
+
+
+
+ Skip compression when protocol payload is below limit to reduce overhead in cpu-usage and additional headers
+
+
+
+
+ Maximum message size in bytes. On limit breach then P:NLog.Targets.NetworkTarget.OnOverflow action is activated.
+
+
+
+
+ Encoding to be used.
+
+
+
+
+ End of line value if a newline is appended at the end of log message P:NLog.Targets.NetworkTarget.NewLine.
+
+
+
+
+ Indicates whether to append newline at the end of log message.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Name of the target.
+
+
+
+
+ Layout used to format log messages.
+
+
+
+
+ Indicates whether to perform layout calculation.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Name of the target.
+
+
+
+
+ Default filter to be applied when no specific rule matches.
+
+
+
+
+
+
+
+
+
+
+
+
+ Condition to be tested.
+
+
+
+
+ Resulting filter to be applied when the condition matches.
+
+
+
+
+
+
+
+
+
+
+
+ Name of the target.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Name of the target.
+
+
+
+
+ Number of times to repeat each log message.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Name of the target.
+
+
+
+
+ Whether to enable batching, and only apply single delay when a whole batch fails
+
+
+
+
+ Number of retries that should be attempted on the wrapped target in case of a failure.
+
+
+
+
+ Time to wait between retries in milliseconds.
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Name of the target.
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Name of the target.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Name of the target.
+
+
+
+
+ Text to be rendered.
+
+
+
+
+ Header.
+
+
+
+
+ Footer.
+
+
+
+
+ Forward F:NLog.LogLevel.Fatal to M:System.Diagnostics.Trace.Fail(System.String) (Instead of M:System.Diagnostics.Trace.TraceError(System.String))
+
+
+
+
+ Force use M:System.Diagnostics.Trace.WriteLine(System.String) independent of T:NLog.LogLevel
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Name of the target.
+
+
+
+
+ Indicates whether to pre-authenticate the HttpWebRequest (Requires 'Authorization' in P:NLog.Targets.WebServiceTarget.Headers parameters)
+
+
+
+
+ Value whether escaping be done according to Rfc3986 (Supports Internationalized Resource Identifiers - IRIs)
+
+
+
+
+ Value whether escaping be done according to the old NLog style (Very non-standard)
+
+
+
+
+ Value of the User-agent HTTP header.
+
+
+
+
+ Web service URL.
+
+
+
+
+ Proxy configuration when calling web service
+
+
+
+
+ Custom proxy address, include port separated by a colon
+
+
+
+
+ Protocol to be used when calling web service.
+
+
+
+
+ Web service namespace. Only used with Soap.
+
+
+
+
+ Web service method name. Only used with Soap.
+
+
+
+
+ Should we include the BOM (Byte-order-mark) for UTF? Influences the P:NLog.Targets.WebServiceTarget.Encoding property. This will only work for UTF-8.
+
+
+
+
+ Encoding.
+
+
+
+
+ Name of the root XML element, if POST of XML document chosen. If so, this property must not be null. (see P:NLog.Targets.WebServiceTarget.Protocol and F:NLog.Targets.WebServiceProtocol.XmlPost).
+
+
+
+
+ (optional) root namespace of the XML document, if POST of XML document chosen. (see P:NLog.Targets.WebServiceTarget.Protocol and F:NLog.Targets.WebServiceProtocol.XmlPost).
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Custom column delimiter value (valid when ColumnDelimiter is set to 'Custom').
+
+
+
+
+ Column delimiter.
+
+
+
+
+ Footer layout.
+
+
+
+
+ Header layout.
+
+
+
+
+ Body layout (can be repeated multiple times).
+
+
+
+
+ Quote Character.
+
+
+
+
+ Quoting mode.
+
+
+
+
+ Indicates whether CVS should include header.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Name of the column.
+
+
+
+
+ Layout of the column.
+
+
+
+
+ Override of Quoting mode
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Option to render the empty object value {}
+
+
+
+
+ Option to suppress the extra spaces in the output json
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Option to include all properties from the log event (as JSON)
+
+
+
+
+ Indicates whether to include contents of the T:NLog.GlobalDiagnosticsContext dictionary.
+
+
+
+
+ Whether to include the contents of the T:NLog.ScopeContext dictionary.
+
+
+
+
+ Should forward slashes be escaped? If true, / will be converted to \/
+
+
+
+
+ Option to exclude null/empty properties from the log event (as JSON)
+
+
+
+
+ List of property names to exclude when P:NLog.Layouts.JsonLayout.IncludeAllProperties is true
+
+
+
+
+ How far should the JSON serializer follow object references before backing off
+
+
+
+
+ Option to render the empty object value {}
+
+
+
+
+ Option to suppress the extra spaces in the output json
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Name of the attribute.
+
+
+
+
+ Layout that will be rendered as the attribute's value.
+
+
+
+
+ Fallback value when result value is not available
+
+
+
+
+ Determines whether or not this attribute will be Json encoded.
+
+
+
+
+ Should forward slashes be escaped? If true, / will be converted to \/
+
+
+
+
+ Indicates whether to escape non-ascii characters
+
+
+
+
+ Whether an attribute with empty value should be included in the output
+
+
+
+
+ Result value type, for conversion of layout rendering output
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Footer layout.
+
+
+
+
+ Header layout.
+
+
+
+
+ Body layout (can be repeated multiple times).
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Option to include all properties from the log events
+
+
+
+
+ Whether to include log4j:NDC in output from T:NLog.ScopeContext nested context.
+
+
+
+
+ Whether to include log4j:NDC in output from T:NLog.ScopeContext nested context.
+
+
+
+
+ Whether to include the contents of the T:NLog.ScopeContext properties-dictionary.
+
+
+
+
+ AppInfo field. By default it's the friendly name of the current AppDomain.
+
+
+
+
+ Indicates whether to include call site (class and method name) in the information sent over the network.
+
+
+
+
+ Indicates whether to include source info (file name and line number) in the information sent over the network.
+
+
+
+
+ Log4j:event logger-xml-attribute (Default ${logger})
+
+
+
+
+ Whether the log4j:throwable xml-element should be written as CDATA
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Layout text.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Name of the root XML element
+
+
+
+
+ Value inside the root XML element
+
+
+
+
+ Whether to include the contents of the T:NLog.ScopeContext dictionary.
+
+
+
+
+ Determines whether or not this attribute will be Xml encoded.
+
+
+
+
+ List of property names to exclude when P:NLog.Layouts.XmlElementBase.IncludeAllProperties is true
+
+
+
+
+ Whether a ElementValue with empty value should be included in the output
+
+
+
+
+ Auto indent and create new lines
+
+
+
+
+ How far should the XML serializer follow object references before backing off
+
+
+
+
+ XML element name to use for rendering IList-collections items
+
+
+
+
+ XML attribute name to use when rendering property-key When null (or empty) then key-attribute is not included
+
+
+
+
+ XML element name to use when rendering properties
+
+
+
+
+ XML attribute name to use when rendering property-value When null (or empty) then value-attribute is not included and value is formatted as XML-element-value
+
+
+
+
+ Option to include all properties from the log event (as XML)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Name of the attribute.
+
+
+
+
+ Layout that will be rendered as the attribute's value.
+
+
+
+
+ Fallback value when result value is not available
+
+
+
+
+ Determines whether or not this attribute will be Xml encoded.
+
+
+
+
+ Whether an attribute with empty value should be included in the output
+
+
+
+
+ Result value type, for conversion of layout rendering output
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Name of the element
+
+
+
+
+ Whether to include the contents of the T:NLog.ScopeContext dictionary.
+
+
+
+
+ Value inside the element
+
+
+
+
+ Determines whether or not this attribute will be Xml encoded.
+
+
+
+
+ List of property names to exclude when P:NLog.Layouts.XmlElementBase.IncludeAllProperties is true
+
+
+
+
+ Whether a ElementValue with empty value should be included in the output
+
+
+
+
+ Auto indent and create new lines
+
+
+
+
+ How far should the XML serializer follow object references before backing off
+
+
+
+
+ XML element name to use for rendering IList-collections items
+
+
+
+
+ XML attribute name to use when rendering property-key When null (or empty) then key-attribute is not included
+
+
+
+
+ XML element name to use when rendering properties
+
+
+
+
+ XML attribute name to use when rendering property-value When null (or empty) then value-attribute is not included and value is formatted as XML-element-value
+
+
+
+
+ Option to include all properties from the log event (as XML)
+
+
+
+
+
+
+
+
+
+
+
+
+ Action to be taken when filter matches.
+
+
+
+
+ Condition expression.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Action to be taken when filter matches.
+
+
+
+
+ Indicates whether to ignore case when comparing strings.
+
+
+
+
+ Layout to be used to filter log messages.
+
+
+
+
+ Substring to be matched.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Action to be taken when filter matches.
+
+
+
+
+ String to compare the layout to.
+
+
+
+
+ Indicates whether to ignore case when comparing strings.
+
+
+
+
+ Layout to be used to filter log messages.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Action to be taken when filter matches.
+
+
+
+
+ Indicates whether to ignore case when comparing strings.
+
+
+
+
+ Layout to be used to filter log messages.
+
+
+
+
+ Substring to be matched.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Action to be taken when filter matches.
+
+
+
+
+ String to compare the layout to.
+
+
+
+
+ Indicates whether to ignore case when comparing strings.
+
+
+
+
+ Layout to be used to filter log messages.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Action to be taken when filter matches.
+
+
+
+
+ Append FilterCount to the P:NLog.LogEventInfo.Message when an event is no longer filtered
+
+
+
+
+ Insert FilterCount value into P:NLog.LogEventInfo.Properties when an event is no longer filtered
+
+
+
+
+ Applies the configured action to the initial logevent that starts the timeout period. Used to configure that it should ignore all events until timeout.
+
+
+
+
+ Layout to be used to filter log messages.
+
+
+
+
+ Max length of filter values, will truncate if above limit
+
+
+
+
+ How long before a filter expires, and logging is accepted again
+
+
+
+
+ Default number of unique filter values to expect, will automatically increase if needed
+
+
+
+
+ Max number of unique filter values to expect simultaneously
+
+
+
+
+ Default buffer size for the internal buffers
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/GameServer/Bin/Release/net9.0/Newtonsoft.Json.dll b/GameServer/Bin/Release/net9.0/Newtonsoft.Json.dll
new file mode 100644
index 00000000..d035c38b
Binary files /dev/null and b/GameServer/Bin/Release/net9.0/Newtonsoft.Json.dll differ
diff --git a/GameServer/Bin/Release/net9.0/SharpCompress.dll b/GameServer/Bin/Release/net9.0/SharpCompress.dll
new file mode 100644
index 00000000..c1a7f074
Binary files /dev/null and b/GameServer/Bin/Release/net9.0/SharpCompress.dll differ
diff --git a/GameServer/Bin/Release/net9.0/Snappier.dll b/GameServer/Bin/Release/net9.0/Snappier.dll
new file mode 100644
index 00000000..9b68e856
Binary files /dev/null and b/GameServer/Bin/Release/net9.0/Snappier.dll differ
diff --git a/GameServer/Bin/Release/net9.0/System.IdentityModel.Tokens.Jwt.dll b/GameServer/Bin/Release/net9.0/System.IdentityModel.Tokens.Jwt.dll
new file mode 100644
index 00000000..135ae17d
Binary files /dev/null and b/GameServer/Bin/Release/net9.0/System.IdentityModel.Tokens.Jwt.dll differ
diff --git a/GameServer/Bin/Release/net9.0/ZstdSharp.dll b/GameServer/Bin/Release/net9.0/ZstdSharp.dll
new file mode 100644
index 00000000..5d93f7e5
Binary files /dev/null and b/GameServer/Bin/Release/net9.0/ZstdSharp.dll differ
diff --git a/GameServer/Bin/Release/net9.0/linux-x64/APlugins.dll b/GameServer/Bin/Release/net9.0/linux-x64/APlugins.dll
new file mode 100644
index 00000000..cc1491d5
Binary files /dev/null and b/GameServer/Bin/Release/net9.0/linux-x64/APlugins.dll differ
diff --git a/GameServer/Bin/Release/net9.0/linux-x64/APlugins.pdb b/GameServer/Bin/Release/net9.0/linux-x64/APlugins.pdb
new file mode 100644
index 00000000..1045ce75
Binary files /dev/null and b/GameServer/Bin/Release/net9.0/linux-x64/APlugins.pdb differ
diff --git a/GameServer/Bin/Release/net9.0/linux-x64/CommandLine.dll b/GameServer/Bin/Release/net9.0/linux-x64/CommandLine.dll
new file mode 100644
index 00000000..3eab2be2
Binary files /dev/null and b/GameServer/Bin/Release/net9.0/linux-x64/CommandLine.dll differ
diff --git a/GameServer/Bin/Release/net9.0/linux-x64/DnsClient.dll b/GameServer/Bin/Release/net9.0/linux-x64/DnsClient.dll
new file mode 100644
index 00000000..39aa546a
Binary files /dev/null and b/GameServer/Bin/Release/net9.0/linux-x64/DnsClient.dll differ
diff --git a/GameServer/Bin/Release/net9.0/linux-x64/Entity.dll b/GameServer/Bin/Release/net9.0/linux-x64/Entity.dll
new file mode 100644
index 00000000..c362e995
Binary files /dev/null and b/GameServer/Bin/Release/net9.0/linux-x64/Entity.dll differ
diff --git a/GameServer/Bin/Release/net9.0/linux-x64/Entity.pdb b/GameServer/Bin/Release/net9.0/linux-x64/Entity.pdb
new file mode 100644
index 00000000..3976e226
Binary files /dev/null and b/GameServer/Bin/Release/net9.0/linux-x64/Entity.pdb differ
diff --git a/GameServer/Bin/Release/net9.0/linux-x64/Fantasy-Net.Config.dll b/GameServer/Bin/Release/net9.0/linux-x64/Fantasy-Net.Config.dll
new file mode 100644
index 00000000..7642a225
Binary files /dev/null and b/GameServer/Bin/Release/net9.0/linux-x64/Fantasy-Net.Config.dll differ
diff --git a/GameServer/Bin/Release/net9.0/linux-x64/Fantasy-Net.ConfigTable.dll b/GameServer/Bin/Release/net9.0/linux-x64/Fantasy-Net.ConfigTable.dll
new file mode 100644
index 00000000..8996ebc6
Binary files /dev/null and b/GameServer/Bin/Release/net9.0/linux-x64/Fantasy-Net.ConfigTable.dll differ
diff --git a/GameServer/Bin/Release/net9.0/linux-x64/Fantasy-Net.NLog.dll b/GameServer/Bin/Release/net9.0/linux-x64/Fantasy-Net.NLog.dll
new file mode 100644
index 00000000..7ffbcb54
Binary files /dev/null and b/GameServer/Bin/Release/net9.0/linux-x64/Fantasy-Net.NLog.dll differ
diff --git a/GameServer/Bin/Release/net9.0/linux-x64/Fantasy-Net.dll b/GameServer/Bin/Release/net9.0/linux-x64/Fantasy-Net.dll
new file mode 100644
index 00000000..41e585d5
Binary files /dev/null and b/GameServer/Bin/Release/net9.0/linux-x64/Fantasy-Net.dll differ
diff --git a/GameServer/Bin/Release/net9.0/linux-x64/Fantasy.Tools.ExporterConfigTable.dll b/GameServer/Bin/Release/net9.0/linux-x64/Fantasy.Tools.ExporterConfigTable.dll
new file mode 100644
index 00000000..cabb7662
Binary files /dev/null and b/GameServer/Bin/Release/net9.0/linux-x64/Fantasy.Tools.ExporterConfigTable.dll differ
diff --git a/GameServer/Bin/Release/net9.0/linux-x64/Fantasy.Tools.ExporterNetworkProtocol.dll b/GameServer/Bin/Release/net9.0/linux-x64/Fantasy.Tools.ExporterNetworkProtocol.dll
new file mode 100644
index 00000000..22e11f8c
Binary files /dev/null and b/GameServer/Bin/Release/net9.0/linux-x64/Fantasy.Tools.ExporterNetworkProtocol.dll differ
diff --git a/GameServer/Bin/Release/net9.0/linux-x64/Hotfix.dll b/GameServer/Bin/Release/net9.0/linux-x64/Hotfix.dll
new file mode 100644
index 00000000..7cc2cb57
Binary files /dev/null and b/GameServer/Bin/Release/net9.0/linux-x64/Hotfix.dll differ
diff --git a/GameServer/Bin/Release/net9.0/linux-x64/Hotfix.pdb b/GameServer/Bin/Release/net9.0/linux-x64/Hotfix.pdb
new file mode 100644
index 00000000..0fbc1833
Binary files /dev/null and b/GameServer/Bin/Release/net9.0/linux-x64/Hotfix.pdb differ
diff --git a/GameServer/Bin/Release/net9.0/linux-x64/Main b/GameServer/Bin/Release/net9.0/linux-x64/Main
new file mode 100644
index 00000000..01a8ff7d
Binary files /dev/null and b/GameServer/Bin/Release/net9.0/linux-x64/Main differ
diff --git a/GameServer/Bin/Release/net9.0/linux-x64/Main.deps.json b/GameServer/Bin/Release/net9.0/linux-x64/Main.deps.json
new file mode 100644
index 00000000..b54c34d1
--- /dev/null
+++ b/GameServer/Bin/Release/net9.0/linux-x64/Main.deps.json
@@ -0,0 +1,579 @@
+{
+ "runtimeTarget": {
+ "name": ".NETCoreApp,Version=v9.0/linux-x64",
+ "signature": ""
+ },
+ "compilationOptions": {},
+ "targets": {
+ ".NETCoreApp,Version=v9.0": {},
+ ".NETCoreApp,Version=v9.0/linux-x64": {
+ "Main/1.0.0": {
+ "dependencies": {
+ "APlugins": "1.0.0",
+ "Entity": "1.0.0",
+ "Fantasy-Net.NLog": "2024.1.20",
+ "Hotfix": "1.0.0"
+ },
+ "runtime": {
+ "Main.dll": {}
+ }
+ },
+ "CommandLineParser/2.9.1": {
+ "runtime": {
+ "lib/netstandard2.0/CommandLine.dll": {
+ "assemblyVersion": "2.9.1.0",
+ "fileVersion": "2.9.1.0"
+ }
+ }
+ },
+ "DnsClient/1.6.1": {
+ "dependencies": {
+ "Microsoft.Win32.Registry": "5.0.0"
+ },
+ "runtime": {
+ "lib/net5.0/DnsClient.dll": {
+ "assemblyVersion": "1.6.1.0",
+ "fileVersion": "1.6.1.0"
+ }
+ }
+ },
+ "Fantasy-Net/2024.2.24": {
+ "dependencies": {
+ "CommandLineParser": "2.9.1",
+ "MongoDB.Bson": "3.1.0",
+ "MongoDB.Driver": "3.1.0",
+ "Newtonsoft.Json": "13.0.3",
+ "protobuf-net": "3.2.45"
+ },
+ "runtime": {
+ "lib/net9.0/Fantasy-Net.dll": {
+ "assemblyVersion": "1.0.0.0",
+ "fileVersion": "1.0.0.0"
+ }
+ }
+ },
+ "Fantasy-Net.Config/2024.1.4": {
+ "runtime": {
+ "lib/net8.0/Fantasy-Net.Config.dll": {
+ "assemblyVersion": "1.0.0.0",
+ "fileVersion": "1.0.0.0"
+ }
+ }
+ },
+ "Fantasy-Net.ConfigTable/2024.2.0": {
+ "dependencies": {
+ "Fantasy-Net": "2024.2.24"
+ },
+ "runtime": {
+ "lib/net8.0/Fantasy-Net.ConfigTable.dll": {
+ "assemblyVersion": "1.0.0.0",
+ "fileVersion": "1.0.0.0"
+ }
+ }
+ },
+ "Fantasy-Net.NLog/2024.1.20": {
+ "dependencies": {
+ "Fantasy-Net": "2024.2.24",
+ "NLog": "5.3.4"
+ },
+ "runtime": {
+ "lib/net8.0/Fantasy-Net.NLog.dll": {
+ "assemblyVersion": "1.0.0.0",
+ "fileVersion": "1.0.0.0"
+ }
+ }
+ },
+ "Fantasy-Net.Tools.ExporterConfigTable/2024.2.0": {
+ "runtime": {
+ "lib/net8.0/Fantasy.Tools.ExporterConfigTable.dll": {
+ "assemblyVersion": "1.0.0.0",
+ "fileVersion": "1.0.0.0"
+ }
+ }
+ },
+ "Fantasy-Net.Tools.ExporterNetworkProtocol/2024.2.24": {
+ "runtime": {
+ "lib/net8.0/Fantasy.Tools.ExporterNetworkProtocol.dll": {
+ "assemblyVersion": "1.0.0.0",
+ "fileVersion": "1.0.0.0"
+ }
+ }
+ },
+ "Microsoft.Extensions.DependencyInjection.Abstractions/8.0.2": {},
+ "Microsoft.Extensions.Logging.Abstractions/8.0.2": {
+ "dependencies": {
+ "Microsoft.Extensions.DependencyInjection.Abstractions": "8.0.2"
+ }
+ },
+ "Microsoft.IdentityModel.Abstractions/8.6.1": {
+ "runtime": {
+ "lib/net9.0/Microsoft.IdentityModel.Abstractions.dll": {
+ "assemblyVersion": "8.6.1.0",
+ "fileVersion": "8.6.1.60307"
+ }
+ }
+ },
+ "Microsoft.IdentityModel.JsonWebTokens/8.6.1": {
+ "dependencies": {
+ "Microsoft.IdentityModel.Tokens": "8.6.1"
+ },
+ "runtime": {
+ "lib/net9.0/Microsoft.IdentityModel.JsonWebTokens.dll": {
+ "assemblyVersion": "8.6.1.0",
+ "fileVersion": "8.6.1.60307"
+ }
+ }
+ },
+ "Microsoft.IdentityModel.Logging/8.6.1": {
+ "dependencies": {
+ "Microsoft.IdentityModel.Abstractions": "8.6.1"
+ },
+ "runtime": {
+ "lib/net9.0/Microsoft.IdentityModel.Logging.dll": {
+ "assemblyVersion": "8.6.1.0",
+ "fileVersion": "8.6.1.60307"
+ }
+ }
+ },
+ "Microsoft.IdentityModel.Tokens/8.6.1": {
+ "dependencies": {
+ "Microsoft.Extensions.Logging.Abstractions": "8.0.2",
+ "Microsoft.IdentityModel.Logging": "8.6.1"
+ },
+ "runtime": {
+ "lib/net9.0/Microsoft.IdentityModel.Tokens.dll": {
+ "assemblyVersion": "8.6.1.0",
+ "fileVersion": "8.6.1.60307"
+ }
+ }
+ },
+ "Microsoft.NETCore.Platforms/5.0.0": {},
+ "Microsoft.Win32.Registry/5.0.0": {
+ "dependencies": {
+ "System.Security.AccessControl": "5.0.0",
+ "System.Security.Principal.Windows": "5.0.0"
+ }
+ },
+ "MongoDB.Bson/3.1.0": {
+ "dependencies": {
+ "System.Memory": "4.5.5",
+ "System.Runtime.CompilerServices.Unsafe": "5.0.0"
+ },
+ "runtime": {
+ "lib/net6.0/MongoDB.Bson.dll": {
+ "assemblyVersion": "3.1.0.0",
+ "fileVersion": "3.1.0.0"
+ }
+ }
+ },
+ "MongoDB.Driver/3.1.0": {
+ "dependencies": {
+ "DnsClient": "1.6.1",
+ "Microsoft.Extensions.Logging.Abstractions": "8.0.2",
+ "MongoDB.Bson": "3.1.0",
+ "SharpCompress": "0.30.1",
+ "Snappier": "1.0.0",
+ "System.Buffers": "4.5.1",
+ "ZstdSharp.Port": "0.7.3"
+ },
+ "runtime": {
+ "lib/net6.0/MongoDB.Driver.dll": {
+ "assemblyVersion": "3.1.0.0",
+ "fileVersion": "3.1.0.0"
+ }
+ }
+ },
+ "Newtonsoft.Json/13.0.3": {
+ "runtime": {
+ "lib/net6.0/Newtonsoft.Json.dll": {
+ "assemblyVersion": "13.0.0.0",
+ "fileVersion": "13.0.3.27908"
+ }
+ }
+ },
+ "NLog/5.3.4": {
+ "runtime": {
+ "lib/netstandard2.0/NLog.dll": {
+ "assemblyVersion": "5.0.0.0",
+ "fileVersion": "5.3.4.2778"
+ }
+ }
+ },
+ "protobuf-net/3.2.45": {
+ "dependencies": {
+ "protobuf-net.Core": "3.2.45"
+ },
+ "runtime": {
+ "lib/net6.0/protobuf-net.dll": {
+ "assemblyVersion": "3.0.0.0",
+ "fileVersion": "3.2.45.36865"
+ }
+ }
+ },
+ "protobuf-net.Core/3.2.45": {
+ "dependencies": {
+ "System.Collections.Immutable": "7.0.0"
+ },
+ "runtime": {
+ "lib/net6.0/protobuf-net.Core.dll": {
+ "assemblyVersion": "3.0.0.0",
+ "fileVersion": "3.2.45.36865"
+ }
+ }
+ },
+ "SharpCompress/0.30.1": {
+ "runtime": {
+ "lib/net5.0/SharpCompress.dll": {
+ "assemblyVersion": "0.30.1.0",
+ "fileVersion": "0.30.1.0"
+ }
+ }
+ },
+ "Snappier/1.0.0": {
+ "runtime": {
+ "lib/net5.0/Snappier.dll": {
+ "assemblyVersion": "1.0.0.0",
+ "fileVersion": "1.0.0.0"
+ }
+ }
+ },
+ "System.Buffers/4.5.1": {},
+ "System.Collections.Immutable/7.0.0": {},
+ "System.Formats.Asn1/5.0.0": {},
+ "System.IdentityModel.Tokens.Jwt/8.6.1": {
+ "dependencies": {
+ "Microsoft.IdentityModel.JsonWebTokens": "8.6.1",
+ "Microsoft.IdentityModel.Tokens": "8.6.1"
+ },
+ "runtime": {
+ "lib/net9.0/System.IdentityModel.Tokens.Jwt.dll": {
+ "assemblyVersion": "8.6.1.0",
+ "fileVersion": "8.6.1.60307"
+ }
+ }
+ },
+ "System.Memory/4.5.5": {},
+ "System.Runtime.CompilerServices.Unsafe/5.0.0": {},
+ "System.Security.AccessControl/5.0.0": {
+ "dependencies": {
+ "Microsoft.NETCore.Platforms": "5.0.0",
+ "System.Security.Principal.Windows": "5.0.0"
+ }
+ },
+ "System.Security.Cryptography.Cng/5.0.0": {
+ "dependencies": {
+ "System.Formats.Asn1": "5.0.0"
+ }
+ },
+ "System.Security.Principal.Windows/5.0.0": {},
+ "ZstdSharp.Port/0.7.3": {
+ "runtime": {
+ "lib/net7.0/ZstdSharp.dll": {
+ "assemblyVersion": "0.7.3.0",
+ "fileVersion": "0.7.3.0"
+ }
+ }
+ },
+ "APlugins/1.0.0": {
+ "dependencies": {
+ "Fantasy-Net.Config": "2024.1.4",
+ "Fantasy-Net.ConfigTable": "2024.2.0",
+ "Fantasy-Net.Tools.ExporterConfigTable": "2024.2.0",
+ "Fantasy-Net.Tools.ExporterNetworkProtocol": "2024.2.24",
+ "Microsoft.IdentityModel.Tokens": "8.6.1"
+ },
+ "runtime": {
+ "APlugins.dll": {
+ "assemblyVersion": "1.0.0.0",
+ "fileVersion": "1.0.0.0"
+ }
+ }
+ },
+ "Entity/1.0.0": {
+ "dependencies": {
+ "APlugins": "1.0.0",
+ "Fantasy-Net": "2024.2.24",
+ "System.IdentityModel.Tokens.Jwt": "8.6.1",
+ "System.Security.Cryptography.Cng": "5.0.0"
+ },
+ "runtime": {
+ "Entity.dll": {
+ "assemblyVersion": "1.0.0.0",
+ "fileVersion": "1.0.0.0"
+ }
+ }
+ },
+ "Hotfix/1.0.0": {
+ "dependencies": {
+ "Entity": "1.0.0"
+ },
+ "runtime": {
+ "Hotfix.dll": {
+ "assemblyVersion": "1.0.0.0",
+ "fileVersion": "1.0.0.0"
+ }
+ }
+ }
+ }
+ },
+ "libraries": {
+ "Main/1.0.0": {
+ "type": "project",
+ "serviceable": false,
+ "sha512": ""
+ },
+ "CommandLineParser/2.9.1": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-OE0sl1/sQ37bjVsPKKtwQlWDgqaxWgtme3xZz7JssWUzg5JpMIyHgCTY9MVMxOg48fJ1AgGT3tgdH5m/kQ5xhA==",
+ "path": "commandlineparser/2.9.1",
+ "hashPath": "commandlineparser.2.9.1.nupkg.sha512"
+ },
+ "DnsClient/1.6.1": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-4H/f2uYJOZ+YObZjpY9ABrKZI+JNw3uizp6oMzTXwDw6F+2qIPhpRl/1t68O/6e98+vqNiYGu+lswmwdYUy3gg==",
+ "path": "dnsclient/1.6.1",
+ "hashPath": "dnsclient.1.6.1.nupkg.sha512"
+ },
+ "Fantasy-Net/2024.2.24": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-5u460iiB29NDwxIBV25WzuxUxW5fV0i8DJ2OE47fSJW1lWq+AP/LJ4KYqcH6zngyDFMOMOjh2S6hT3IZ/r4dwA==",
+ "path": "fantasy-net/2024.2.24",
+ "hashPath": "fantasy-net.2024.2.24.nupkg.sha512"
+ },
+ "Fantasy-Net.Config/2024.1.4": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-zStTIJq91mx3VjCcU7eAtrExAcv1Zg+dAd8UdDvpHu7kTY8ldDQMp8sCmez2s+vUTmNyH1hlOgEE3rJILAijfQ==",
+ "path": "fantasy-net.config/2024.1.4",
+ "hashPath": "fantasy-net.config.2024.1.4.nupkg.sha512"
+ },
+ "Fantasy-Net.ConfigTable/2024.2.0": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-TIpd7Cz5eTx5WlI0QPA/gLkTCNWW4DHFXG5ZXgLjkxgxC4AYpXzvktaU/merldPuccaebc7ld8oVxJ0fejKHEg==",
+ "path": "fantasy-net.configtable/2024.2.0",
+ "hashPath": "fantasy-net.configtable.2024.2.0.nupkg.sha512"
+ },
+ "Fantasy-Net.NLog/2024.1.20": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-HJuHfecWrD7tcQYEZezJzgayvG5leAbdWlgvo9ft/CUuwTtAB+tkeKP3e3VtbkCoPaAZO4VAUN0Y30Ute2/vrQ==",
+ "path": "fantasy-net.nlog/2024.1.20",
+ "hashPath": "fantasy-net.nlog.2024.1.20.nupkg.sha512"
+ },
+ "Fantasy-Net.Tools.ExporterConfigTable/2024.2.0": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-jPL8qd+9WTsOAOhXVkAOHuwjoyFTGIg6Zr/zsSP+OB4G6sNklcHI0KDnMYWN0EW01fSycl/g1DyRyyDdwZ2iPQ==",
+ "path": "fantasy-net.tools.exporterconfigtable/2024.2.0",
+ "hashPath": "fantasy-net.tools.exporterconfigtable.2024.2.0.nupkg.sha512"
+ },
+ "Fantasy-Net.Tools.ExporterNetworkProtocol/2024.2.24": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-gKbHZBgiTuERq4LCgctChvpYJGVoUbGNHoXq9x7Yz7aUoU7/M6DjuGdZE7XnsyNioddz1Gh992900RUAPwSpjQ==",
+ "path": "fantasy-net.tools.exporternetworkprotocol/2024.2.24",
+ "hashPath": "fantasy-net.tools.exporternetworkprotocol.2024.2.24.nupkg.sha512"
+ },
+ "Microsoft.Extensions.DependencyInjection.Abstractions/8.0.2": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-3iE7UF7MQkCv1cxzCahz+Y/guQbTqieyxyaWKhrRO91itI9cOKO76OHeQDahqG4MmW5umr3CcCvGmK92lWNlbg==",
+ "path": "microsoft.extensions.dependencyinjection.abstractions/8.0.2",
+ "hashPath": "microsoft.extensions.dependencyinjection.abstractions.8.0.2.nupkg.sha512"
+ },
+ "Microsoft.Extensions.Logging.Abstractions/8.0.2": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-nroMDjS7hNBPtkZqVBbSiQaQjWRDxITI8Y7XnDs97rqG3EbzVTNLZQf7bIeUJcaHOV8bca47s1Uxq94+2oGdxA==",
+ "path": "microsoft.extensions.logging.abstractions/8.0.2",
+ "hashPath": "microsoft.extensions.logging.abstractions.8.0.2.nupkg.sha512"
+ },
+ "Microsoft.IdentityModel.Abstractions/8.6.1": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-OwmvCXYTttrxV3qT7QKDkoQP4/DB4RWjTwEqV+dNfb2opHn29WGDzoF+r4BVFQVy+BDYMhRlhIp8g3jSyJd+4Q==",
+ "path": "microsoft.identitymodel.abstractions/8.6.1",
+ "hashPath": "microsoft.identitymodel.abstractions.8.6.1.nupkg.sha512"
+ },
+ "Microsoft.IdentityModel.JsonWebTokens/8.6.1": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-CAu9DWsPZVtnyE3bOJ83rlPWpahY37sP/0bIOdRlxS90W88zSI4V3FyoCDlXxV8+gloT+a247pwPXfSNjYyAxw==",
+ "path": "microsoft.identitymodel.jsonwebtokens/8.6.1",
+ "hashPath": "microsoft.identitymodel.jsonwebtokens.8.6.1.nupkg.sha512"
+ },
+ "Microsoft.IdentityModel.Logging/8.6.1": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-BdWlVgJYdmcR9TMUOhaZ3vJyaRO7zr7xgK+cRT4R2q59Xl7JMmTB4ctb/VOsyDhxXb497jDNNvLwldp+2ZVBEg==",
+ "path": "microsoft.identitymodel.logging/8.6.1",
+ "hashPath": "microsoft.identitymodel.logging.8.6.1.nupkg.sha512"
+ },
+ "Microsoft.IdentityModel.Tokens/8.6.1": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-FvED2com8LIFl9yFXneiX0uxNf9fuf8jKDFcvxC93qXOAfFa8fdLkCiur1vWF+PvgQHhsHVBe6CtDZHzsN8nCQ==",
+ "path": "microsoft.identitymodel.tokens/8.6.1",
+ "hashPath": "microsoft.identitymodel.tokens.8.6.1.nupkg.sha512"
+ },
+ "Microsoft.NETCore.Platforms/5.0.0": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-VyPlqzH2wavqquTcYpkIIAQ6WdenuKoFN0BdYBbCWsclXacSOHNQn66Gt4z5NBqEYW0FAPm5rlvki9ZiCij5xQ==",
+ "path": "microsoft.netcore.platforms/5.0.0",
+ "hashPath": "microsoft.netcore.platforms.5.0.0.nupkg.sha512"
+ },
+ "Microsoft.Win32.Registry/5.0.0": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-dDoKi0PnDz31yAyETfRntsLArTlVAVzUzCIvvEDsDsucrl33Dl8pIJG06ePTJTI3tGpeyHS9Cq7Foc/s4EeKcg==",
+ "path": "microsoft.win32.registry/5.0.0",
+ "hashPath": "microsoft.win32.registry.5.0.0.nupkg.sha512"
+ },
+ "MongoDB.Bson/3.1.0": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-3dhaZhz18B5vUoEP13o2j8A6zQfkHdZhwBvLZEjDJum4BTLLv1/Z8bt25UQEtpqvYwLgde4R6ekWZ7XAYUMxuw==",
+ "path": "mongodb.bson/3.1.0",
+ "hashPath": "mongodb.bson.3.1.0.nupkg.sha512"
+ },
+ "MongoDB.Driver/3.1.0": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-+O7lKaIl7VUHptE0hqTd7UY1G5KDp/o8S4upG7YL4uChMNKD/U6tz9i17nMGHaD/L2AiPLgaJcaDe2XACsegGA==",
+ "path": "mongodb.driver/3.1.0",
+ "hashPath": "mongodb.driver.3.1.0.nupkg.sha512"
+ },
+ "Newtonsoft.Json/13.0.3": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-HrC5BXdl00IP9zeV+0Z848QWPAoCr9P3bDEZguI+gkLcBKAOxix/tLEAAHC+UvDNPv4a2d18lOReHMOagPa+zQ==",
+ "path": "newtonsoft.json/13.0.3",
+ "hashPath": "newtonsoft.json.13.0.3.nupkg.sha512"
+ },
+ "NLog/5.3.4": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-gLy7+O1hEYJXIlcTr1/VWjGXrZTQFZzYNO18IWasD64pNwz0BreV+nHLxWKXWZzERRzoKnsk2XYtwLkTVk7J1A==",
+ "path": "nlog/5.3.4",
+ "hashPath": "nlog.5.3.4.nupkg.sha512"
+ },
+ "protobuf-net/3.2.45": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-5UZ/ukUHcGbFSl7vNMrHsfjqdxusdd9w7w0fCEXzf3UUtsrGNVCzV5SmF+sCHAbnRV2qPcD1ixiDP7Aj8lX/HA==",
+ "path": "protobuf-net/3.2.45",
+ "hashPath": "protobuf-net.3.2.45.nupkg.sha512"
+ },
+ "protobuf-net.Core/3.2.45": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-PMWatW2NrT1uTXD7etJ4VdQ0wWZLFrIfdRGppD2QX7nzZ0+kIzqhq551u6ZiXJHWJgG4hWFEkSnUnt2aB6posg==",
+ "path": "protobuf-net.core/3.2.45",
+ "hashPath": "protobuf-net.core.3.2.45.nupkg.sha512"
+ },
+ "SharpCompress/0.30.1": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-XqD4TpfyYGa7QTPzaGlMVbcecKnXy4YmYLDWrU+JIj7IuRNl7DH2END+Ll7ekWIY8o3dAMWLFDE1xdhfIWD1nw==",
+ "path": "sharpcompress/0.30.1",
+ "hashPath": "sharpcompress.0.30.1.nupkg.sha512"
+ },
+ "Snappier/1.0.0": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-rFtK2KEI9hIe8gtx3a0YDXdHOpedIf9wYCEYtBEmtlyiWVX3XlCNV03JrmmAi/Cdfn7dxK+k0sjjcLv4fpHnqA==",
+ "path": "snappier/1.0.0",
+ "hashPath": "snappier.1.0.0.nupkg.sha512"
+ },
+ "System.Buffers/4.5.1": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-Rw7ijyl1qqRS0YQD/WycNst8hUUMgrMH4FCn1nNm27M4VxchZ1js3fVjQaANHO5f3sN4isvP4a+Met9Y4YomAg==",
+ "path": "system.buffers/4.5.1",
+ "hashPath": "system.buffers.4.5.1.nupkg.sha512"
+ },
+ "System.Collections.Immutable/7.0.0": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-dQPcs0U1IKnBdRDBkrCTi1FoajSTBzLcVTpjO4MBCMC7f4pDOIPzgBoX8JjG7X6uZRJ8EBxsi8+DR1JuwjnzOQ==",
+ "path": "system.collections.immutable/7.0.0",
+ "hashPath": "system.collections.immutable.7.0.0.nupkg.sha512"
+ },
+ "System.Formats.Asn1/5.0.0": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-MTvUIktmemNB+El0Fgw9egyqT9AYSIk6DTJeoDSpc3GIHxHCMo8COqkWT1mptX5tZ1SlQ6HJZ0OsSvMth1c12w==",
+ "path": "system.formats.asn1/5.0.0",
+ "hashPath": "system.formats.asn1.5.0.0.nupkg.sha512"
+ },
+ "System.IdentityModel.Tokens.Jwt/8.6.1": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-EXL1Tj+pizswtHHPiQyNumrTo8XOLX7SoTm7Bz00/DyiIoG2H/kQItoajSvr1MYtvDNXveqULsoWDoJFI3aHzQ==",
+ "path": "system.identitymodel.tokens.jwt/8.6.1",
+ "hashPath": "system.identitymodel.tokens.jwt.8.6.1.nupkg.sha512"
+ },
+ "System.Memory/4.5.5": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-XIWiDvKPXaTveaB7HVganDlOCRoj03l+jrwNvcge/t8vhGYKvqV+dMv6G4SAX2NoNmN0wZfVPTAlFwZcZvVOUw==",
+ "path": "system.memory/4.5.5",
+ "hashPath": "system.memory.4.5.5.nupkg.sha512"
+ },
+ "System.Runtime.CompilerServices.Unsafe/5.0.0": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-ZD9TMpsmYJLrxbbmdvhwt9YEgG5WntEnZ/d1eH8JBX9LBp+Ju8BSBhUGbZMNVHHomWo2KVImJhTDl2hIgw/6MA==",
+ "path": "system.runtime.compilerservices.unsafe/5.0.0",
+ "hashPath": "system.runtime.compilerservices.unsafe.5.0.0.nupkg.sha512"
+ },
+ "System.Security.AccessControl/5.0.0": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-dagJ1mHZO3Ani8GH0PHpPEe/oYO+rVdbQjvjJkBRNQkX4t0r1iaeGn8+/ybkSLEan3/slM0t59SVdHzuHf2jmw==",
+ "path": "system.security.accesscontrol/5.0.0",
+ "hashPath": "system.security.accesscontrol.5.0.0.nupkg.sha512"
+ },
+ "System.Security.Cryptography.Cng/5.0.0": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-jIMXsKn94T9JY7PvPq/tMfqa6GAaHpElRDpmG+SuL+D3+sTw2M8VhnibKnN8Tq+4JqbPJ/f+BwtLeDMEnzAvRg==",
+ "path": "system.security.cryptography.cng/5.0.0",
+ "hashPath": "system.security.cryptography.cng.5.0.0.nupkg.sha512"
+ },
+ "System.Security.Principal.Windows/5.0.0": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-t0MGLukB5WAVU9bO3MGzvlGnyJPgUlcwerXn1kzBRjwLKixT96XV0Uza41W49gVd8zEMFu9vQEFlv0IOrytICA==",
+ "path": "system.security.principal.windows/5.0.0",
+ "hashPath": "system.security.principal.windows.5.0.0.nupkg.sha512"
+ },
+ "ZstdSharp.Port/0.7.3": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-U9Ix4l4cl58Kzz1rJzj5hoVTjmbx1qGMwzAcbv1j/d3NzrFaESIurQyg+ow4mivCgkE3S413y+U9k4WdnEIkRA==",
+ "path": "zstdsharp.port/0.7.3",
+ "hashPath": "zstdsharp.port.0.7.3.nupkg.sha512"
+ },
+ "APlugins/1.0.0": {
+ "type": "project",
+ "serviceable": false,
+ "sha512": ""
+ },
+ "Entity/1.0.0": {
+ "type": "project",
+ "serviceable": false,
+ "sha512": ""
+ },
+ "Hotfix/1.0.0": {
+ "type": "project",
+ "serviceable": false,
+ "sha512": ""
+ }
+ }
+}
\ No newline at end of file
diff --git a/GameServer/Bin/Release/net9.0/linux-x64/Main.dll b/GameServer/Bin/Release/net9.0/linux-x64/Main.dll
new file mode 100644
index 00000000..f5a23d4f
Binary files /dev/null and b/GameServer/Bin/Release/net9.0/linux-x64/Main.dll differ
diff --git a/GameServer/Bin/Release/net9.0/linux-x64/Main.pdb b/GameServer/Bin/Release/net9.0/linux-x64/Main.pdb
new file mode 100644
index 00000000..72b4315c
Binary files /dev/null and b/GameServer/Bin/Release/net9.0/linux-x64/Main.pdb differ
diff --git a/GameServer/Bin/Release/net9.0/linux-x64/Main.runtimeconfig.json b/GameServer/Bin/Release/net9.0/linux-x64/Main.runtimeconfig.json
new file mode 100644
index 00000000..2e596832
--- /dev/null
+++ b/GameServer/Bin/Release/net9.0/linux-x64/Main.runtimeconfig.json
@@ -0,0 +1,19 @@
+{
+ "runtimeOptions": {
+ "tfm": "net9.0",
+ "frameworks": [
+ {
+ "name": "Microsoft.NETCore.App",
+ "version": "9.0.0"
+ },
+ {
+ "name": "Microsoft.AspNetCore.App",
+ "version": "9.0.0"
+ }
+ ],
+ "configProperties": {
+ "System.Reflection.Metadata.MetadataUpdater.IsSupported": false,
+ "System.Runtime.Serialization.EnableUnsafeBinaryFormatterSerialization": false
+ }
+ }
+}
\ No newline at end of file
diff --git a/GameServer/Bin/Release/net9.0/linux-x64/Microsoft.IdentityModel.Abstractions.dll b/GameServer/Bin/Release/net9.0/linux-x64/Microsoft.IdentityModel.Abstractions.dll
new file mode 100644
index 00000000..54acaf95
Binary files /dev/null and b/GameServer/Bin/Release/net9.0/linux-x64/Microsoft.IdentityModel.Abstractions.dll differ
diff --git a/GameServer/Bin/Release/net9.0/linux-x64/Microsoft.IdentityModel.JsonWebTokens.dll b/GameServer/Bin/Release/net9.0/linux-x64/Microsoft.IdentityModel.JsonWebTokens.dll
new file mode 100644
index 00000000..fce94dc9
Binary files /dev/null and b/GameServer/Bin/Release/net9.0/linux-x64/Microsoft.IdentityModel.JsonWebTokens.dll differ
diff --git a/GameServer/Bin/Release/net9.0/linux-x64/Microsoft.IdentityModel.Logging.dll b/GameServer/Bin/Release/net9.0/linux-x64/Microsoft.IdentityModel.Logging.dll
new file mode 100644
index 00000000..e08a8df6
Binary files /dev/null and b/GameServer/Bin/Release/net9.0/linux-x64/Microsoft.IdentityModel.Logging.dll differ
diff --git a/GameServer/Bin/Release/net9.0/linux-x64/Microsoft.IdentityModel.Tokens.dll b/GameServer/Bin/Release/net9.0/linux-x64/Microsoft.IdentityModel.Tokens.dll
new file mode 100644
index 00000000..b10d9bc7
Binary files /dev/null and b/GameServer/Bin/Release/net9.0/linux-x64/Microsoft.IdentityModel.Tokens.dll differ
diff --git a/GameServer/Bin/Release/net9.0/linux-x64/MongoDB.Bson.dll b/GameServer/Bin/Release/net9.0/linux-x64/MongoDB.Bson.dll
new file mode 100644
index 00000000..c604c81a
Binary files /dev/null and b/GameServer/Bin/Release/net9.0/linux-x64/MongoDB.Bson.dll differ
diff --git a/GameServer/Bin/Release/net9.0/linux-x64/MongoDB.Driver.dll b/GameServer/Bin/Release/net9.0/linux-x64/MongoDB.Driver.dll
new file mode 100644
index 00000000..1308944b
Binary files /dev/null and b/GameServer/Bin/Release/net9.0/linux-x64/MongoDB.Driver.dll differ
diff --git a/GameServer/Bin/Release/net9.0/linux-x64/NLog.config b/GameServer/Bin/Release/net9.0/linux-x64/NLog.config
new file mode 100644
index 00000000..4df5ea1b
--- /dev/null
+++ b/GameServer/Bin/Release/net9.0/linux-x64/NLog.config
@@ -0,0 +1,91 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/GameServer/Bin/Release/net9.0/linux-x64/NLog.dll b/GameServer/Bin/Release/net9.0/linux-x64/NLog.dll
new file mode 100644
index 00000000..49604e19
Binary files /dev/null and b/GameServer/Bin/Release/net9.0/linux-x64/NLog.dll differ
diff --git a/GameServer/Bin/Release/net9.0/linux-x64/NLog.xsd b/GameServer/Bin/Release/net9.0/linux-x64/NLog.xsd
new file mode 100644
index 00000000..63c9a0cc
--- /dev/null
+++ b/GameServer/Bin/Release/net9.0/linux-x64/NLog.xsd
@@ -0,0 +1,3483 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Watch config file for changes and reload automatically.
+
+
+
+
+ Print internal NLog messages to the console. Default value is: false
+
+
+
+
+ Print internal NLog messages to the console error output. Default value is: false
+
+
+
+
+ Write internal NLog messages to the specified file.
+
+
+
+
+ Log level threshold for internal log messages. Default value is: Info.
+
+
+
+
+ Global log level threshold for application log messages. Messages below this level won't be logged.
+
+
+
+
+ Throw an exception when there is an internal error. Default value is: false. Not recommend to set to true in production!
+
+
+
+
+ Throw an exception when there is a configuration error. If not set, determined by throwExceptions.
+
+
+
+
+ Gets or sets a value indicating whether Variables should be kept on configuration reload. Default value is: false.
+
+
+
+
+ Write internal NLog messages to the System.Diagnostics.Trace. Default value is: false.
+
+
+
+
+ Write timestamps for internal NLog messages. Default value is: true.
+
+
+
+
+ Use InvariantCulture as default culture instead of CurrentCulture. Default value is: false.
+
+
+
+
+ Perform message template parsing and formatting of LogEvent messages (true = Always, false = Never, empty = Auto Detect). Default value is: empty.
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Make all targets within this section asynchronous (creates additional threads but the calling thread isn't blocked by any target writes).
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Prefix for targets/layout renderers/filters/conditions loaded from this assembly.
+
+
+
+
+ Load NLog extensions from the specified file (*.dll)
+
+
+
+
+ Load NLog extensions from the specified assembly. Assembly name should be fully qualified.
+
+
+
+
+
+
+
+
+
+ Filter on the name of the logger. May include wildcard characters ('*' or '?').
+
+
+
+
+ Comma separated list of levels that this rule matches.
+
+
+
+
+ Minimum level that this rule matches.
+
+
+
+
+ Maximum level that this rule matches.
+
+
+
+
+ Level that this rule matches.
+
+
+
+
+ Comma separated list of target names.
+
+
+
+
+ Ignore further rules if this one matches.
+
+
+
+
+ Enable this rule. Note: disabled rules aren't available from the API.
+
+
+
+
+ Rule identifier to allow rule lookup with Configuration.FindRuleByName and Configuration.RemoveRuleByName.
+
+
+
+
+ Loggers matching will be restricted to specified minimum level for following rules.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Default action if none of the filters match.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Name of the file to be included. You could use * wildcard. The name is relative to the name of the current config file.
+
+
+
+
+ Ignore any errors in the include file.
+
+
+
+
+
+
+
+ Variable value. Note, the 'value' attribute has precedence over this one.
+
+
+
+
+
+ Variable name.
+
+
+
+
+ Variable value.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Name of the target.
+
+
+
+
+ Action to be taken when the lazy writer thread request queue count exceeds the set limit.
+
+
+
+
+ Limit on the number of requests in the lazy writer thread request queue.
+
+
+
+
+ Number of log events that should be processed in a batch by the lazy writer thread.
+
+
+
+
+ Whether to use the locking queue, instead of a lock-free concurrent queue
+
+
+
+
+ Number of batches of P:NLog.Targets.Wrappers.AsyncTargetWrapper.BatchSize to write before yielding into P:NLog.Targets.Wrappers.AsyncTargetWrapper.TimeToSleepBetweenBatches
+
+
+
+
+ Time in milliseconds to sleep between batches. (1 or less means trigger on new activity)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Name of the target.
+
+
+
+
+ Delay the flush until the LogEvent has been confirmed as written
+
+
+
+
+ Condition expression. Log events who meet this condition will cause a flush on the wrapped target.
+
+
+
+
+ Only flush when LogEvent matches condition. Ignore explicit-flush, config-reload-flush and shutdown-flush
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Name of the target.
+
+
+
+
+ Number of log events to be buffered.
+
+
+
+
+ Action to take if the buffer overflows.
+
+
+
+
+ Timeout (in milliseconds) after which the contents of buffer will be flushed if there's no write in the specified period of time. Use -1 to disable timed flushes.
+
+
+
+
+ Indicates whether to use sliding timeout.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Name of the target.
+
+
+
+
+ Separator for T:NLog.ScopeContext operation-states-stack.
+
+
+
+
+ Stack separator for log4j:NDC in output from T:NLog.ScopeContext nested context.
+
+
+
+
+ Renderer for log4j:event logger-xml-attribute (Default ${logger})
+
+
+
+
+ Whether to include the contents of the T:NLog.ScopeContext properties-dictionary.
+
+
+
+
+ Whether to include log4j:NDC in output from T:NLog.ScopeContext nested context.
+
+
+
+
+ Indicates whether to include source info (file name and line number) in the information sent over the network.
+
+
+
+
+ Whether to include log4j:NDC in output from T:NLog.ScopeContext nested context.
+
+
+
+
+ Option to include all properties from the log events
+
+
+
+
+ Indicates whether to include call site (class and method name) in the information sent over the network.
+
+
+
+
+ AppInfo field. By default it's the friendly name of the current AppDomain.
+
+
+
+
+ Instance of T:NLog.Layouts.Log4JXmlEventLayout that is used to format log messages.
+
+
+
+
+ Indicates whether to include NLog-specific extensions to log4j schema.
+
+
+
+
+ Action that should be taken, when more connections than P:NLog.Targets.NetworkTarget.MaxConnections.
+
+
+
+
+ SSL/TLS protocols. Default no SSL/TLS is used. Currently only implemented for TCP.
+
+
+
+
+ Action that should be taken, when more pending messages than P:NLog.Targets.NetworkTarget.MaxQueueSize.
+
+
+
+
+ Action that should be taken if the message is larger than P:NLog.Targets.NetworkTarget.MaxMessageSize
+
+
+
+
+ Maximum queue size for a single connection. Requires P:NLog.Targets.NetworkTarget.KeepConnection = true
+
+
+
+
+ Network address.
+
+
+
+
+ Indicates whether to keep connection open whenever possible.
+
+
+
+
+ The number of seconds a connection will remain idle before the first keep-alive probe is sent
+
+
+
+
+ Size of the connection cache (number of connections which are kept alive). Requires P:NLog.Targets.NetworkTarget.KeepConnection = true
+
+
+
+
+ Maximum simultaneous connections. Requires P:NLog.Targets.NetworkTarget.KeepConnection = false
+
+
+
+
+ Type of compression for protocol payload. Useful for UDP where datagram max-size is 8192 bytes.
+
+
+
+
+ Skip compression when protocol payload is below limit to reduce overhead in cpu-usage and additional headers
+
+
+
+
+ Maximum message size in bytes. On limit breach then P:NLog.Targets.NetworkTarget.OnOverflow action is activated.
+
+
+
+
+ Encoding to be used.
+
+
+
+
+ End of line value if a newline is appended at the end of log message P:NLog.Targets.NetworkTarget.NewLine.
+
+
+
+
+ Indicates whether to append newline at the end of log message.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Viewer parameter name.
+
+
+
+
+ Layout that should be use to calculate the value for the parameter.
+
+
+
+
+ Whether an attribute with empty value should be included in the output
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Name of the target.
+
+
+
+
+ Text to be rendered.
+
+
+
+
+ Header.
+
+
+
+
+ Footer.
+
+
+
+
+ Indicates whether to auto-check if the console is available. - Disables console writing if Environment.UserInteractive = False (Windows Service) - Disables console writing if Console Standard Input is not available (Non-Console-App)
+
+
+
+
+ Enables output using ANSI Color Codes
+
+
+
+
+ The encoding for writing messages to the T:System.Console.
+
+
+
+
+ Indicates whether to send the log messages to the standard error instead of the standard output.
+
+
+
+
+ Indicates whether to auto-flush after M:System.Console.WriteLine
+
+
+
+
+ Indicates whether to auto-check if the console has been redirected to file - Disables coloring logic when System.Console.IsOutputRedirected = true
+
+
+
+
+ Indicates whether to use default row highlighting rules.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Background color.
+
+
+
+
+ Condition that must be met in order to set the specified foreground and background color.
+
+
+
+
+ Foreground color.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Background color.
+
+
+
+
+ Compile the P:NLog.Targets.ConsoleWordHighlightingRule.Regex? This can improve the performance, but at the costs of more memory usage. If false, the Regex Cache is used.
+
+
+
+
+ Condition that must be met before scanning the row for highlight of words
+
+
+
+
+ Foreground color.
+
+
+
+
+ Indicates whether to ignore case when comparing texts.
+
+
+
+
+ Regular expression to be matched. You must specify either text or regex.
+
+
+
+
+ Text to be matched. You must specify either text or regex.
+
+
+
+
+ Indicates whether to match whole words only.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Name of the target.
+
+
+
+
+ Text to be rendered.
+
+
+
+
+ Header.
+
+
+
+
+ Footer.
+
+
+
+
+ Indicates whether to auto-flush after M:System.Console.WriteLine
+
+
+
+
+ Indicates whether to auto-check if the console is available - Disables console writing if Environment.UserInteractive = False (Windows Service) - Disables console writing if Console Standard Input is not available (Non-Console-App)
+
+
+
+
+ The encoding for writing messages to the T:System.Console.
+
+
+
+
+ Indicates whether to send the log messages to the standard error instead of the standard output.
+
+
+
+
+ Whether to activate internal buffering to allow batch writing, instead of using M:System.Console.WriteLine
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Name of the target.
+
+
+
+
+ Database user name. If the ConnectionString is not provided this value will be used to construct the "User ID=" part of the connection string.
+
+
+
+
+ Database password. If the ConnectionString is not provided this value will be used to construct the "Password=" part of the connection string.
+
+
+
+
+ Database name. If the ConnectionString is not provided this value will be used to construct the "Database=" part of the connection string.
+
+
+
+
+ Name of the connection string (as specified in <connectionStrings> configuration section.
+
+
+
+
+ Database host name. If the ConnectionString is not provided this value will be used to construct the "Server=" part of the connection string.
+
+
+
+
+ Indicates whether to keep the database connection open between the log events.
+
+
+
+
+ Name of the database provider.
+
+
+
+
+ Connection string. When provided, it overrides the values specified in DBHost, DBUserName, DBPassword, DBDatabase.
+
+
+
+
+ Connection string using for installation and uninstallation. If not provided, regular ConnectionString is being used.
+
+
+
+
+ Configures isolated transaction batch writing. If supported by the database, then it will improve insert performance.
+
+
+
+
+ Text of the SQL command to be run on each log level.
+
+
+
+
+ Type of the SQL command to be run on each log level.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Convert format of the property value
+
+
+
+
+ Culture used for parsing property string-value for type-conversion
+
+
+
+
+ Value to assign on the object-property
+
+
+
+
+ Name for the object-property
+
+
+
+
+ Type of the object-property
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Type of the command.
+
+
+
+
+ Connection string to run the command against. If not provided, connection string from the target is used.
+
+
+
+
+ Indicates whether to ignore failures.
+
+
+
+
+ Command text.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Database parameter name.
+
+
+
+
+ Layout that should be use to calculate the value for the parameter.
+
+
+
+
+ Database parameter DbType.
+
+
+
+
+ Database parameter size.
+
+
+
+
+ Database parameter precision.
+
+
+
+
+ Database parameter scale.
+
+
+
+
+ Type of the parameter.
+
+
+
+
+ Fallback value when result value is not available
+
+
+
+
+ Convert format of the database parameter value.
+
+
+
+
+ Culture used for parsing parameter string-value for type-conversion
+
+
+
+
+ Whether empty value should translate into DbNull. Requires database column to allow NULL values.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Name of the target.
+
+
+
+
+ Text to be rendered.
+
+
+
+
+ Header.
+
+
+
+
+ Footer.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Name of the target.
+
+
+
+
+ Text to be rendered.
+
+
+
+
+ Header.
+
+
+
+
+ Footer.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Name of the target.
+
+
+
+
+ Layout used to format log messages.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Name of the target.
+
+
+
+
+ Layout used to format log messages.
+
+
+
+
+ Layout that renders event Category.
+
+
+
+
+ Optional entry type. When not set, or when not convertible to T:System.Diagnostics.EventLogEntryType then determined by T:NLog.LogLevel
+
+
+
+
+ Layout that renders event ID.
+
+
+
+
+ Name of the Event Log to write to. This can be System, Application or any user-defined name.
+
+
+
+
+ Name of the machine on which Event Log service is running.
+
+
+
+
+ Maximum Event log size in kilobytes.
+
+
+
+
+ Message length limit to write to the Event Log.
+
+
+
+
+ Value to be used as the event Source.
+
+
+
+
+ Action to take if the message is larger than the P:NLog.Targets.EventLogTarget.MaxMessageLength option.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Name of the target.
+
+
+
+
+ Indicates whether to return to the first target after any successful write.
+
+
+
+
+ Whether to enable batching, but fallback will be handled individually
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Name of the target.
+
+
+
+
+ Name of the file to write to.
+
+
+
+
+ Text to be rendered.
+
+
+
+
+ Header.
+
+
+
+
+ Footer.
+
+
+
+
+ Indicates whether the footer should be written only when the file is archived.
+
+
+
+
+ Maximum number of archive files that should be kept.
+
+
+
+
+ Maximum days of archive files that should be kept.
+
+
+
+
+ Value of the file size threshold to archive old log file on startup.
+
+
+
+
+ Indicates whether to archive old log file on startup.
+
+
+
+
+ Indicates whether to compress archive files into the zip archive format.
+
+
+
+
+ Name of the file to be used for an archive.
+
+
+
+
+ Is the P:NLog.Targets.FileTarget.ArchiveFileName an absolute or relative path?
+
+
+
+
+ Indicates whether to automatically archive log files every time the specified time passes.
+
+
+
+
+ Value specifying the date format to use when archiving files.
+
+
+
+
+ Size in bytes above which log files will be automatically archived.
+
+
+
+
+ Way file archives are numbered.
+
+
+
+
+ Indicates whether to create directories if they do not exist.
+
+
+
+
+ Indicates whether file creation calls should be synchronized by a system global mutex.
+
+
+
+
+ Gets or set a value indicating whether a managed file stream is forced, instead of using the native implementation.
+
+
+
+
+ Is the P:NLog.Targets.FileTarget.FileName an absolute or relative path?
+
+
+
+
+ File attributes (Windows only).
+
+
+
+
+ Cleanup invalid values in a filename, e.g. slashes in a filename. If set to true, this can impact the performance of massive writes. If set to false, nothing gets written when the filename is wrong.
+
+
+
+
+ Indicates whether to write BOM (byte order mark) in created files. Defaults to true for UTF-16 and UTF-32
+
+
+
+
+ Indicates whether to enable log file(s) to be deleted.
+
+
+
+
+ Indicates whether to delete old log file on startup.
+
+
+
+
+ File encoding.
+
+
+
+
+ Indicates whether to replace file contents on each write instead of appending log message at the end.
+
+
+
+
+ Line ending mode.
+
+
+
+
+ Number of times the write is appended on the file before NLog discards the log message.
+
+
+
+
+ Delay in milliseconds to wait before attempting to write to the file again.
+
+
+
+
+ Maximum number of seconds before open files are flushed. Zero or negative means disabled.
+
+
+
+
+ Maximum number of seconds that files are kept open. Zero or negative means disabled.
+
+
+
+
+ Indicates whether concurrent writes to the log file by multiple processes on different network hosts.
+
+
+
+
+ Log file buffer size in bytes.
+
+
+
+
+ Indicates whether to automatically flush the file buffers after each log message.
+
+
+
+
+ Indicates whether to keep log file open instead of opening and closing it on each logging event.
+
+
+
+
+ Indicates whether concurrent writes to the log file by multiple processes on the same host.
+
+
+
+
+ Whether or not this target should just discard all data that its asked to write. Mostly used for when testing NLog Stack except final write
+
+
+
+
+ Number of files to be kept open. Setting this to a higher value may improve performance in a situation where a single File target is writing to many files (such as splitting by level or by logger).
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Name of the target.
+
+
+
+
+ Condition expression. Log events who meet this condition will be forwarded to the wrapped target.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Name of the target.
+
+
+
+
+ Identifier to perform group-by
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Name of the target.
+
+
+
+
+ Windows domain name to change context to.
+
+
+
+
+ Required impersonation level.
+
+
+
+
+ Type of the logon provider.
+
+
+
+
+ Logon Type.
+
+
+
+
+ User account password.
+
+
+
+
+ Indicates whether to revert to the credentials of the process instead of impersonating another user.
+
+
+
+
+ Username to change context to.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Name of the target.
+
+
+
+
+ Interval in which messages will be written up to the P:NLog.Targets.Wrappers.LimitingTargetWrapper.MessageLimit number of messages.
+
+
+
+
+ Maximum allowed number of messages written per P:NLog.Targets.Wrappers.LimitingTargetWrapper.Interval.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Name of the target.
+
+
+
+
+ Text to be rendered.
+
+
+
+
+ Header.
+
+
+
+
+ Footer.
+
+
+
+
+ Indicates whether NewLine characters in the body should be replaced with tags.
+
+
+
+
+ Priority used for sending mails.
+
+
+
+
+ Encoding to be used for sending e-mail.
+
+
+
+
+ BCC email addresses separated by semicolons (e.g. john@domain.com;jane@domain.com).
+
+
+
+
+ CC email addresses separated by semicolons (e.g. john@domain.com;jane@domain.com).
+
+
+
+
+ Indicates whether to add new lines between log entries.
+
+
+
+
+ Indicates whether to send message as HTML instead of plain text.
+
+
+
+
+ Sender's email address (e.g. joe@domain.com).
+
+
+
+
+ Mail message body (repeated for each log message send in one mail).
+
+
+
+
+ Mail subject.
+
+
+
+
+ Recipients' email addresses separated by semicolons (e.g. john@domain.com;jane@domain.com).
+
+
+
+
+ Specifies how outgoing email messages will be handled.
+
+
+
+
+ SMTP Server to be used for sending.
+
+
+
+
+ SMTP Authentication mode.
+
+
+
+
+ Username used to connect to SMTP server (used when SmtpAuthentication is set to "basic").
+
+
+
+
+ Password used to authenticate against SMTP server (used when SmtpAuthentication is set to "basic").
+
+
+
+
+ Indicates whether SSL (secure sockets layer) should be used when communicating with SMTP server.
+
+
+
+
+ Port number that SMTP Server is listening on.
+
+
+
+
+ Indicates whether the default Settings from System.Net.MailSettings should be used.
+
+
+
+
+ Folder where applications save mail messages to be processed by the local SMTP server.
+
+
+
+
+ Indicates the SMTP client timeout.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Name of the target.
+
+
+
+
+ Text to be rendered.
+
+
+
+
+ Header.
+
+
+
+
+ Footer.
+
+
+
+
+ Max number of items to have in memory
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Name of the target.
+
+
+
+
+ Class name.
+
+
+
+
+ Method name. The method must be public and static. Use the AssemblyQualifiedName , https://msdn.microsoft.com/en-us/library/system.type.assemblyqualifiedname(v=vs.110).aspx e.g.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Name of the parameter.
+
+
+
+
+ Layout that should be use to calculate the value for the parameter.
+
+
+
+
+ Fallback value when result value is not available
+
+
+
+
+ Type of the parameter.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Name of the target.
+
+
+
+
+ Layout used to format log messages.
+
+
+
+
+ SSL/TLS protocols. Default no SSL/TLS is used. Currently only implemented for TCP.
+
+
+
+
+ Action that should be taken, when more pending messages than P:NLog.Targets.NetworkTarget.MaxQueueSize.
+
+
+
+
+ Action that should be taken if the message is larger than P:NLog.Targets.NetworkTarget.MaxMessageSize
+
+
+
+
+ Maximum queue size for a single connection. Requires P:NLog.Targets.NetworkTarget.KeepConnection = true
+
+
+
+
+ Action that should be taken, when more connections than P:NLog.Targets.NetworkTarget.MaxConnections.
+
+
+
+
+ Indicates whether to keep connection open whenever possible.
+
+
+
+
+ The number of seconds a connection will remain idle before the first keep-alive probe is sent
+
+
+
+
+ Size of the connection cache (number of connections which are kept alive). Requires P:NLog.Targets.NetworkTarget.KeepConnection = true
+
+
+
+
+ Network address.
+
+
+
+
+ Maximum simultaneous connections. Requires P:NLog.Targets.NetworkTarget.KeepConnection = false
+
+
+
+
+ Type of compression for protocol payload. Useful for UDP where datagram max-size is 8192 bytes.
+
+
+
+
+ Skip compression when protocol payload is below limit to reduce overhead in cpu-usage and additional headers
+
+
+
+
+ Maximum message size in bytes. On limit breach then P:NLog.Targets.NetworkTarget.OnOverflow action is activated.
+
+
+
+
+ Encoding to be used.
+
+
+
+
+ End of line value if a newline is appended at the end of log message P:NLog.Targets.NetworkTarget.NewLine.
+
+
+
+
+ Indicates whether to append newline at the end of log message.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Name of the target.
+
+
+
+
+ Separator for T:NLog.ScopeContext operation-states-stack.
+
+
+
+
+ Stack separator for log4j:NDC in output from T:NLog.ScopeContext nested context.
+
+
+
+
+ Renderer for log4j:event logger-xml-attribute (Default ${logger})
+
+
+
+
+ Whether to include the contents of the T:NLog.ScopeContext properties-dictionary.
+
+
+
+
+ Whether to include log4j:NDC in output from T:NLog.ScopeContext nested context.
+
+
+
+
+ Indicates whether to include source info (file name and line number) in the information sent over the network.
+
+
+
+
+ Whether to include log4j:NDC in output from T:NLog.ScopeContext nested context.
+
+
+
+
+ Option to include all properties from the log events
+
+
+
+
+ Indicates whether to include call site (class and method name) in the information sent over the network.
+
+
+
+
+ AppInfo field. By default it's the friendly name of the current AppDomain.
+
+
+
+
+ Instance of T:NLog.Layouts.Log4JXmlEventLayout that is used to format log messages.
+
+
+
+
+ Indicates whether to include NLog-specific extensions to log4j schema.
+
+
+
+
+ Action that should be taken, when more connections than P:NLog.Targets.NetworkTarget.MaxConnections.
+
+
+
+
+ SSL/TLS protocols. Default no SSL/TLS is used. Currently only implemented for TCP.
+
+
+
+
+ Action that should be taken, when more pending messages than P:NLog.Targets.NetworkTarget.MaxQueueSize.
+
+
+
+
+ Action that should be taken if the message is larger than P:NLog.Targets.NetworkTarget.MaxMessageSize
+
+
+
+
+ Maximum queue size for a single connection. Requires P:NLog.Targets.NetworkTarget.KeepConnection = true
+
+
+
+
+ Network address.
+
+
+
+
+ Indicates whether to keep connection open whenever possible.
+
+
+
+
+ The number of seconds a connection will remain idle before the first keep-alive probe is sent
+
+
+
+
+ Size of the connection cache (number of connections which are kept alive). Requires P:NLog.Targets.NetworkTarget.KeepConnection = true
+
+
+
+
+ Maximum simultaneous connections. Requires P:NLog.Targets.NetworkTarget.KeepConnection = false
+
+
+
+
+ Type of compression for protocol payload. Useful for UDP where datagram max-size is 8192 bytes.
+
+
+
+
+ Skip compression when protocol payload is below limit to reduce overhead in cpu-usage and additional headers
+
+
+
+
+ Maximum message size in bytes. On limit breach then P:NLog.Targets.NetworkTarget.OnOverflow action is activated.
+
+
+
+
+ Encoding to be used.
+
+
+
+
+ End of line value if a newline is appended at the end of log message P:NLog.Targets.NetworkTarget.NewLine.
+
+
+
+
+ Indicates whether to append newline at the end of log message.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Name of the target.
+
+
+
+
+ Layout used to format log messages.
+
+
+
+
+ Indicates whether to perform layout calculation.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Name of the target.
+
+
+
+
+ Default filter to be applied when no specific rule matches.
+
+
+
+
+
+
+
+
+
+
+
+
+ Condition to be tested.
+
+
+
+
+ Resulting filter to be applied when the condition matches.
+
+
+
+
+
+
+
+
+
+
+
+ Name of the target.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Name of the target.
+
+
+
+
+ Number of times to repeat each log message.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Name of the target.
+
+
+
+
+ Whether to enable batching, and only apply single delay when a whole batch fails
+
+
+
+
+ Number of retries that should be attempted on the wrapped target in case of a failure.
+
+
+
+
+ Time to wait between retries in milliseconds.
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Name of the target.
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Name of the target.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Name of the target.
+
+
+
+
+ Text to be rendered.
+
+
+
+
+ Header.
+
+
+
+
+ Footer.
+
+
+
+
+ Forward F:NLog.LogLevel.Fatal to M:System.Diagnostics.Trace.Fail(System.String) (Instead of M:System.Diagnostics.Trace.TraceError(System.String))
+
+
+
+
+ Force use M:System.Diagnostics.Trace.WriteLine(System.String) independent of T:NLog.LogLevel
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Name of the target.
+
+
+
+
+ Indicates whether to pre-authenticate the HttpWebRequest (Requires 'Authorization' in P:NLog.Targets.WebServiceTarget.Headers parameters)
+
+
+
+
+ Value whether escaping be done according to Rfc3986 (Supports Internationalized Resource Identifiers - IRIs)
+
+
+
+
+ Value whether escaping be done according to the old NLog style (Very non-standard)
+
+
+
+
+ Value of the User-agent HTTP header.
+
+
+
+
+ Web service URL.
+
+
+
+
+ Proxy configuration when calling web service
+
+
+
+
+ Custom proxy address, include port separated by a colon
+
+
+
+
+ Protocol to be used when calling web service.
+
+
+
+
+ Web service namespace. Only used with Soap.
+
+
+
+
+ Web service method name. Only used with Soap.
+
+
+
+
+ Should we include the BOM (Byte-order-mark) for UTF? Influences the P:NLog.Targets.WebServiceTarget.Encoding property. This will only work for UTF-8.
+
+
+
+
+ Encoding.
+
+
+
+
+ Name of the root XML element, if POST of XML document chosen. If so, this property must not be null. (see P:NLog.Targets.WebServiceTarget.Protocol and F:NLog.Targets.WebServiceProtocol.XmlPost).
+
+
+
+
+ (optional) root namespace of the XML document, if POST of XML document chosen. (see P:NLog.Targets.WebServiceTarget.Protocol and F:NLog.Targets.WebServiceProtocol.XmlPost).
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Custom column delimiter value (valid when ColumnDelimiter is set to 'Custom').
+
+
+
+
+ Column delimiter.
+
+
+
+
+ Footer layout.
+
+
+
+
+ Header layout.
+
+
+
+
+ Body layout (can be repeated multiple times).
+
+
+
+
+ Quote Character.
+
+
+
+
+ Quoting mode.
+
+
+
+
+ Indicates whether CVS should include header.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Name of the column.
+
+
+
+
+ Layout of the column.
+
+
+
+
+ Override of Quoting mode
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Option to render the empty object value {}
+
+
+
+
+ Option to suppress the extra spaces in the output json
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Option to include all properties from the log event (as JSON)
+
+
+
+
+ Indicates whether to include contents of the T:NLog.GlobalDiagnosticsContext dictionary.
+
+
+
+
+ Whether to include the contents of the T:NLog.ScopeContext dictionary.
+
+
+
+
+ Should forward slashes be escaped? If true, / will be converted to \/
+
+
+
+
+ Option to exclude null/empty properties from the log event (as JSON)
+
+
+
+
+ List of property names to exclude when P:NLog.Layouts.JsonLayout.IncludeAllProperties is true
+
+
+
+
+ How far should the JSON serializer follow object references before backing off
+
+
+
+
+ Option to render the empty object value {}
+
+
+
+
+ Option to suppress the extra spaces in the output json
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Name of the attribute.
+
+
+
+
+ Layout that will be rendered as the attribute's value.
+
+
+
+
+ Fallback value when result value is not available
+
+
+
+
+ Determines whether or not this attribute will be Json encoded.
+
+
+
+
+ Should forward slashes be escaped? If true, / will be converted to \/
+
+
+
+
+ Indicates whether to escape non-ascii characters
+
+
+
+
+ Whether an attribute with empty value should be included in the output
+
+
+
+
+ Result value type, for conversion of layout rendering output
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Footer layout.
+
+
+
+
+ Header layout.
+
+
+
+
+ Body layout (can be repeated multiple times).
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Option to include all properties from the log events
+
+
+
+
+ Whether to include log4j:NDC in output from T:NLog.ScopeContext nested context.
+
+
+
+
+ Whether to include log4j:NDC in output from T:NLog.ScopeContext nested context.
+
+
+
+
+ Whether to include the contents of the T:NLog.ScopeContext properties-dictionary.
+
+
+
+
+ AppInfo field. By default it's the friendly name of the current AppDomain.
+
+
+
+
+ Indicates whether to include call site (class and method name) in the information sent over the network.
+
+
+
+
+ Indicates whether to include source info (file name and line number) in the information sent over the network.
+
+
+
+
+ Log4j:event logger-xml-attribute (Default ${logger})
+
+
+
+
+ Whether the log4j:throwable xml-element should be written as CDATA
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Layout text.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Name of the root XML element
+
+
+
+
+ Value inside the root XML element
+
+
+
+
+ Whether to include the contents of the T:NLog.ScopeContext dictionary.
+
+
+
+
+ Determines whether or not this attribute will be Xml encoded.
+
+
+
+
+ List of property names to exclude when P:NLog.Layouts.XmlElementBase.IncludeAllProperties is true
+
+
+
+
+ Whether a ElementValue with empty value should be included in the output
+
+
+
+
+ Auto indent and create new lines
+
+
+
+
+ How far should the XML serializer follow object references before backing off
+
+
+
+
+ XML element name to use for rendering IList-collections items
+
+
+
+
+ XML attribute name to use when rendering property-key When null (or empty) then key-attribute is not included
+
+
+
+
+ XML element name to use when rendering properties
+
+
+
+
+ XML attribute name to use when rendering property-value When null (or empty) then value-attribute is not included and value is formatted as XML-element-value
+
+
+
+
+ Option to include all properties from the log event (as XML)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Name of the attribute.
+
+
+
+
+ Layout that will be rendered as the attribute's value.
+
+
+
+
+ Fallback value when result value is not available
+
+
+
+
+ Determines whether or not this attribute will be Xml encoded.
+
+
+
+
+ Whether an attribute with empty value should be included in the output
+
+
+
+
+ Result value type, for conversion of layout rendering output
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Name of the element
+
+
+
+
+ Whether to include the contents of the T:NLog.ScopeContext dictionary.
+
+
+
+
+ Value inside the element
+
+
+
+
+ Determines whether or not this attribute will be Xml encoded.
+
+
+
+
+ List of property names to exclude when P:NLog.Layouts.XmlElementBase.IncludeAllProperties is true
+
+
+
+
+ Whether a ElementValue with empty value should be included in the output
+
+
+
+
+ Auto indent and create new lines
+
+
+
+
+ How far should the XML serializer follow object references before backing off
+
+
+
+
+ XML element name to use for rendering IList-collections items
+
+
+
+
+ XML attribute name to use when rendering property-key When null (or empty) then key-attribute is not included
+
+
+
+
+ XML element name to use when rendering properties
+
+
+
+
+ XML attribute name to use when rendering property-value When null (or empty) then value-attribute is not included and value is formatted as XML-element-value
+
+
+
+
+ Option to include all properties from the log event (as XML)
+
+
+
+
+
+
+
+
+
+
+
+
+ Action to be taken when filter matches.
+
+
+
+
+ Condition expression.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Action to be taken when filter matches.
+
+
+
+
+ Indicates whether to ignore case when comparing strings.
+
+
+
+
+ Layout to be used to filter log messages.
+
+
+
+
+ Substring to be matched.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Action to be taken when filter matches.
+
+
+
+
+ String to compare the layout to.
+
+
+
+
+ Indicates whether to ignore case when comparing strings.
+
+
+
+
+ Layout to be used to filter log messages.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Action to be taken when filter matches.
+
+
+
+
+ Indicates whether to ignore case when comparing strings.
+
+
+
+
+ Layout to be used to filter log messages.
+
+
+
+
+ Substring to be matched.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Action to be taken when filter matches.
+
+
+
+
+ String to compare the layout to.
+
+
+
+
+ Indicates whether to ignore case when comparing strings.
+
+
+
+
+ Layout to be used to filter log messages.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Action to be taken when filter matches.
+
+
+
+
+ Append FilterCount to the P:NLog.LogEventInfo.Message when an event is no longer filtered
+
+
+
+
+ Insert FilterCount value into P:NLog.LogEventInfo.Properties when an event is no longer filtered
+
+
+
+
+ Applies the configured action to the initial logevent that starts the timeout period. Used to configure that it should ignore all events until timeout.
+
+
+
+
+ Layout to be used to filter log messages.
+
+
+
+
+ Max length of filter values, will truncate if above limit
+
+
+
+
+ How long before a filter expires, and logging is accepted again
+
+
+
+
+ Default number of unique filter values to expect, will automatically increase if needed
+
+
+
+
+ Max number of unique filter values to expect simultaneously
+
+
+
+
+ Default buffer size for the internal buffers
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/GameServer/Bin/Release/net9.0/linux-x64/Newtonsoft.Json.dll b/GameServer/Bin/Release/net9.0/linux-x64/Newtonsoft.Json.dll
new file mode 100644
index 00000000..d035c38b
Binary files /dev/null and b/GameServer/Bin/Release/net9.0/linux-x64/Newtonsoft.Json.dll differ
diff --git a/GameServer/Bin/Release/net9.0/linux-x64/SharpCompress.dll b/GameServer/Bin/Release/net9.0/linux-x64/SharpCompress.dll
new file mode 100644
index 00000000..c1a7f074
Binary files /dev/null and b/GameServer/Bin/Release/net9.0/linux-x64/SharpCompress.dll differ
diff --git a/GameServer/Bin/Release/net9.0/linux-x64/Snappier.dll b/GameServer/Bin/Release/net9.0/linux-x64/Snappier.dll
new file mode 100644
index 00000000..9b68e856
Binary files /dev/null and b/GameServer/Bin/Release/net9.0/linux-x64/Snappier.dll differ
diff --git a/GameServer/Bin/Release/net9.0/linux-x64/System.IdentityModel.Tokens.Jwt.dll b/GameServer/Bin/Release/net9.0/linux-x64/System.IdentityModel.Tokens.Jwt.dll
new file mode 100644
index 00000000..135ae17d
Binary files /dev/null and b/GameServer/Bin/Release/net9.0/linux-x64/System.IdentityModel.Tokens.Jwt.dll differ
diff --git a/GameServer/Bin/Release/net9.0/linux-x64/ZstdSharp.dll b/GameServer/Bin/Release/net9.0/linux-x64/ZstdSharp.dll
new file mode 100644
index 00000000..5d93f7e5
Binary files /dev/null and b/GameServer/Bin/Release/net9.0/linux-x64/ZstdSharp.dll differ
diff --git a/GameServer/Bin/Release/net9.0/linux-x64/protobuf-net.Core.dll b/GameServer/Bin/Release/net9.0/linux-x64/protobuf-net.Core.dll
new file mode 100644
index 00000000..b3e554dc
Binary files /dev/null and b/GameServer/Bin/Release/net9.0/linux-x64/protobuf-net.Core.dll differ
diff --git a/GameServer/Bin/Release/net9.0/linux-x64/protobuf-net.dll b/GameServer/Bin/Release/net9.0/linux-x64/protobuf-net.dll
new file mode 100644
index 00000000..e75237bc
Binary files /dev/null and b/GameServer/Bin/Release/net9.0/linux-x64/protobuf-net.dll differ
diff --git a/GameServer/Bin/Release/net9.0/protobuf-net.Core.dll b/GameServer/Bin/Release/net9.0/protobuf-net.Core.dll
new file mode 100644
index 00000000..b3e554dc
Binary files /dev/null and b/GameServer/Bin/Release/net9.0/protobuf-net.Core.dll differ
diff --git a/GameServer/Bin/Release/net9.0/protobuf-net.dll b/GameServer/Bin/Release/net9.0/protobuf-net.dll
new file mode 100644
index 00000000..e75237bc
Binary files /dev/null and b/GameServer/Bin/Release/net9.0/protobuf-net.dll differ
diff --git a/GameServer/Bin/Release/net9.0/新建 文本文档.txt b/GameServer/Bin/Release/net9.0/新建 文本文档.txt
new file mode 100644
index 00000000..e69de29b
diff --git a/GameServer/Config/Binary/MachineConfigData.bytes b/GameServer/Config/Binary/MachineConfigData.bytes
new file mode 100644
index 00000000..d4ebe57e
--- /dev/null
+++ b/GameServer/Config/Binary/MachineConfigData.bytes
@@ -0,0 +1,2 @@
+
+# 127.0.0.1 127.0.0.1" 127.0.0.1
\ No newline at end of file
diff --git a/GameServer/Config/Binary/ProcessConfigData.bytes b/GameServer/Config/Binary/ProcessConfigData.bytes
new file mode 100644
index 00000000..b9c2dfd2
--- /dev/null
+++ b/GameServer/Config/Binary/ProcessConfigData.bytes
@@ -0,0 +1,2 @@
+
+
\ No newline at end of file
diff --git a/GameServer/Config/Binary/SceneConfigData.bytes b/GameServer/Config/Binary/SceneConfigData.bytes
new file mode 100644
index 00000000..7e555d20
--- /dev/null
+++ b/GameServer/Config/Binary/SceneConfigData.bytes
@@ -0,0 +1,6 @@
+
+2"MultiThread*Authentication2KCP8@UH
+2"MultiThread*Authentication2KCP8@UH
+("MultiThread*Gate2KCP8@VH
+("MultiThread*Gate2KCP8@VH
+("MultiThread*Chat2TCP8@VH
\ No newline at end of file
diff --git a/GameServer/Config/Binary/UnitConfigData.bytes b/GameServer/Config/Binary/UnitConfigData.bytes
new file mode 100644
index 00000000..041af7b7
--- /dev/null
+++ b/GameServer/Config/Binary/UnitConfigData.bytes
@@ -0,0 +1,4 @@
+
+'Unit01Unit01"
+Idle
+Run
\ No newline at end of file
diff --git a/GameServer/Config/Binary/WorldConfigData.bytes b/GameServer/Config/Binary/WorldConfigData.bytes
new file mode 100644
index 00000000..62d8946f
--- /dev/null
+++ b/GameServer/Config/Binary/WorldConfigData.bytes
@@ -0,0 +1,2 @@
+
+9 测试服mongodb://127.0.0.1"fantasy_main*MongoDB
\ No newline at end of file
diff --git a/GameServer/Config/Excel/Custom.txt b/GameServer/Config/Excel/Custom.txt
new file mode 100644
index 00000000..fd90a9bf
--- /dev/null
+++ b/GameServer/Config/Excel/Custom.txt
@@ -0,0 +1 @@
+// 自定义导出配置文件,用于配置自定义导出自定义程序的路径
diff --git a/GameServer/Config/Excel/Server/MachineConfig.xlsx b/GameServer/Config/Excel/Server/MachineConfig.xlsx
new file mode 100644
index 00000000..f2ad337c
Binary files /dev/null and b/GameServer/Config/Excel/Server/MachineConfig.xlsx differ
diff --git a/GameServer/Config/Excel/Server/ProcessConfig.xlsx b/GameServer/Config/Excel/Server/ProcessConfig.xlsx
new file mode 100644
index 00000000..a6d3f7ae
Binary files /dev/null and b/GameServer/Config/Excel/Server/ProcessConfig.xlsx differ
diff --git a/GameServer/Config/Excel/Server/SceneConfig.xlsx b/GameServer/Config/Excel/Server/SceneConfig.xlsx
new file mode 100644
index 00000000..b7f689f7
Binary files /dev/null and b/GameServer/Config/Excel/Server/SceneConfig.xlsx differ
diff --git a/GameServer/Config/Excel/Server/WorldConfig.xlsx b/GameServer/Config/Excel/Server/WorldConfig.xlsx
new file mode 100644
index 00000000..f060a0bf
Binary files /dev/null and b/GameServer/Config/Excel/Server/WorldConfig.xlsx differ
diff --git a/GameServer/Config/Excel/UnitConfig.xlsx b/GameServer/Config/Excel/UnitConfig.xlsx
new file mode 100644
index 00000000..aaa0bbcf
Binary files /dev/null and b/GameServer/Config/Excel/UnitConfig.xlsx differ
diff --git a/GameServer/Config/Excel/Version.txt b/GameServer/Config/Excel/Version.txt
new file mode 100644
index 00000000..c370f8f3
--- /dev/null
+++ b/GameServer/Config/Excel/Version.txt
@@ -0,0 +1 @@
+{"WorksheetNames":["UnitConfig","ProcessConfig","MachineConfig","WorldConfig","SceneConfig","SceneTypeConfig"],"Tables":{"UnitConfig":1743089717604,"MachineConfig":1743089717603,"ProcessConfig":1743089717603,"SceneConfig":1743439139119,"WorldConfig":1743089717604}}
\ No newline at end of file
diff --git a/GameServer/Config/Json/Server/MachineConfigData.Json b/GameServer/Config/Json/Server/MachineConfigData.Json
new file mode 100644
index 00000000..f56f98e9
--- /dev/null
+++ b/GameServer/Config/Json/Server/MachineConfigData.Json
@@ -0,0 +1,3 @@
+{"List":[
+{"Id":1,"OuterIP":"127.0.0.1","OuterBindIP":"127.0.0.1","InnerBindIP":"127.0.0.1"}
+]}
diff --git a/GameServer/Config/Json/Server/ProcessConfigData.Json b/GameServer/Config/Json/Server/ProcessConfigData.Json
new file mode 100644
index 00000000..a05a13c8
--- /dev/null
+++ b/GameServer/Config/Json/Server/ProcessConfigData.Json
@@ -0,0 +1,3 @@
+{"List":[
+{"Id":1,"MachineId":1,"StartupGroup":0}
+]}
diff --git a/GameServer/Config/Json/Server/SceneConfigData.Json b/GameServer/Config/Json/Server/SceneConfigData.Json
new file mode 100644
index 00000000..6bb866cd
--- /dev/null
+++ b/GameServer/Config/Json/Server/SceneConfigData.Json
@@ -0,0 +1,7 @@
+{"List":[
+{"Id":1001,"ProcessConfigId":1,"WorldConfigId":1,"SceneRuntimeType":"MultiThread","SceneTypeString":"Authentication","NetworkProtocol":"KCP","OuterPort":21001,"InnerPort":11001,"SceneType":1},
+{"Id":1002,"ProcessConfigId":1,"WorldConfigId":1,"SceneRuntimeType":"MultiThread","SceneTypeString":"Authentication","NetworkProtocol":"KCP","OuterPort":21002,"InnerPort":11002,"SceneType":1},
+{"Id":1010,"ProcessConfigId":1,"WorldConfigId":1,"SceneRuntimeType":"MultiThread","SceneTypeString":"Gate","NetworkProtocol":"KCP","OuterPort":21010,"InnerPort":11010,"SceneType":3},
+{"Id":1011,"ProcessConfigId":1,"WorldConfigId":1,"SceneRuntimeType":"MultiThread","SceneTypeString":"Gate","NetworkProtocol":"KCP","OuterPort":21011,"InnerPort":11011,"SceneType":3},
+{"Id":1026,"ProcessConfigId":1,"WorldConfigId":1,"SceneRuntimeType":"MultiThread","SceneTypeString":"Chat","NetworkProtocol":"TCP","OuterPort":21016,"InnerPort":11026,"SceneType":8}
+]}
diff --git a/GameServer/Config/Json/Server/UnitConfigData.Json b/GameServer/Config/Json/Server/UnitConfigData.Json
new file mode 100644
index 00000000..c78ee79d
--- /dev/null
+++ b/GameServer/Config/Json/Server/UnitConfigData.Json
@@ -0,0 +1,3 @@
+{"List":[
+{"Id":1,"Name":"Unit01","Model":"Unit01","Dic":{"Dic":{"1":"Idle","2":"Run"}}}
+]}
diff --git a/GameServer/Config/Json/Server/WorldConfigData.Json b/GameServer/Config/Json/Server/WorldConfigData.Json
new file mode 100644
index 00000000..580dfa92
--- /dev/null
+++ b/GameServer/Config/Json/Server/WorldConfigData.Json
@@ -0,0 +1,3 @@
+{"List":[
+{"Id":1,"WorldName":"测试服","DbConnection":"mongodb://127.0.0.1","DbName":"fantasy_main","DbType":"MongoDB"}
+]}
diff --git a/GameServer/Config/NetworkProtocol/Inner/InnerMessage.proto b/GameServer/Config/NetworkProtocol/Inner/InnerMessage.proto
new file mode 100644
index 00000000..da9a5f11
--- /dev/null
+++ b/GameServer/Config/NetworkProtocol/Inner/InnerMessage.proto
@@ -0,0 +1,104 @@
+syntax = "proto3";
+package Sining.Message;
+
+
+//Gate
+message G2Chat_LoginRequest // IRouteRequest,Chat2G_LoginResponse
+{
+ string GameName = 1;
+ int64 AccountId = 2;
+ int64 GateRoutedId = 3;
+}
+message Chat2G_LoginResponse // IRouteResponse
+{
+ int64 ChatRouteId = 1 ;
+}
+
+message G2Chat_OfflineRequest // IRouteRequest, Chat2G_OfflineResponse
+{
+
+}
+message Chat2G_OfflineResponse // IRouteResponse
+{
+
+}
+
+
+message Chat2G_BoardMessage // IRouteMessage
+{
+ string Message = 1;
+}
+
+
+
+
+
+
+message G2A_TestMessage // IRouteMessage
+{
+ string Tag = 1;
+}
+message G2A_TestRequest // IRouteRequest,G2A_TestResponse
+{
+
+}
+message G2A_TestResponse // IRouteResponse
+{
+
+}
+message G2M_RequestAddressableId // IRouteRequest,M2G_ResponseAddressableId
+{
+
+}
+message M2G_ResponseAddressableId // IRouteResponse
+{
+ int64 AddressableId = 1; // Map服务器返回的AddressableId
+}
+/// 通知Chat服务器创建一个RouteId
+message G2Chat_CreateRouteRequest // IRouteRequest,Chat2G_CreateRouteResponse
+{
+ int64 GateRouteId = 1;
+}
+message Chat2G_CreateRouteResponse // IRouteResponse
+{
+ int64 ChatRouteId = 1;
+}
+/// Map给另外一个Map发送Unit数据
+// Protocol Bson
+message M2M_SendUnitRequest // IRouteRequest,M2M_SendUnitResponse
+{
+
+}
+// Protocol Bson
+message M2M_SendUnitResponse // IRouteResponse
+{
+
+}
+/// Gate发送Addressable消息给MAP
+message G2M_SendAddressableMessage // IAddressableRouteMessage
+{
+ string Tag = 1;
+}
+// Gate通知Map创建一个SubScene
+message G2M_CreateSubSceneRequest // IRouteRequest,M2G_CreateSubSceneResponse
+{
+
+}
+message M2G_CreateSubSceneResponse // IRouteResponse
+{
+ int64 SubSceneRouteId = 1;
+}
+// Gate给SubScene发送一个消息
+message G2SubScene_SentMessage // IRouteMessage
+{
+ string Tag = 1;
+}
+/// Gate通知SubScene创建一个Addressable消息
+message G2SubScene_AddressableIdRequest // IRouteRequest,SubScene2G_AddressableIdResponse
+{
+
+}
+message SubScene2G_AddressableIdResponse // IRouteResponse
+{
+ int64 AddressableId = 1; // SubScene服务器返回的AddressableId
+}
\ No newline at end of file
diff --git a/GameServer/Config/NetworkProtocol/OpCode.Cache b/GameServer/Config/NetworkProtocol/OpCode.Cache
new file mode 100644
index 00000000..9e26dfee
--- /dev/null
+++ b/GameServer/Config/NetworkProtocol/OpCode.Cache
@@ -0,0 +1 @@
+{}
\ No newline at end of file
diff --git a/GameServer/Config/NetworkProtocol/Outer/OuterMessage.proto b/GameServer/Config/NetworkProtocol/Outer/OuterMessage.proto
new file mode 100644
index 00000000..335f5e18
--- /dev/null
+++ b/GameServer/Config/NetworkProtocol/Outer/OuterMessage.proto
@@ -0,0 +1,243 @@
+syntax = "proto3";
+package Fantasy.Network.Message;
+// 协议分为:
+// ProtoBuf:可以在Outer和Inner文件里使用。
+// MemoryPack:可以在Outer和Inner文件里使用。
+// Bson:仅支持在Inner文件里使用。
+// 使用方式:
+// 在message协议上方添加// Protocol+空格+协议名字
+// 例如:// Protocol ProtoBuf 或 // Protocol MemoryPack
+
+
+//Authentication
+message C2A_RegisterRequest // IRequest,A2C_RegisterResponse
+{
+ string Username = 1;
+ string Password = 2;
+ string Source = 3;
+}
+message A2C_RegisterResponse // IResponse
+{
+ string Tag = 1;
+}
+
+message C2A_LoginRequest // IRequest,A2C_LoginResponse
+{
+ string Username = 1;
+ string Password = 2;
+ string Source = 3;
+}
+
+message A2C_LoginResponse // IResponse
+{
+ string Token = 1;
+}
+
+
+//Gate
+message C2G_LoginRequest // IRequest,G2C_LoginResponse
+{
+ string Token = 1;
+}
+
+message G2C_LoginResponse //IResponse
+{
+ string Tag = 1;
+ GameAccountInfo GameAccount = 2;
+}
+
+
+
+message G2C_LoginRepeatedMessage //IMessage
+{
+
+}
+
+message C2G_GetGameAccountInfo //IRequest , G2C_GetGameAccountInfo
+{
+ int64 AccountId = 1;
+}
+
+message G2C_GetGameAccountInfo //IResponse
+{
+ GameAccountInfo AccountInfo = 1 ;
+}
+message GameAccountInfo
+{
+ int64 CreateTime = 1;
+ int64 LoginTime = 2 ;
+ string GameName = 3 ;
+}
+
+message G2C_OpenGameNameInputWindowsMessage //IMessage
+{
+ string Tag = 1 ;
+}
+
+
+message C2G_UpdateAndSaveGameNameRequest //IRequest,G2C_UpdateAndSaveGameNameResponse
+{
+ int64 AccountId = 1 ;
+ string GameName = 2 ;
+}
+
+message G2C_UpdateAndSaveGameNameResponse //IResponse
+{
+ string Tag = 1;
+}
+
+//chat
+
+message C2Chat_BoardMessageRequest //ICustomRouteRequest,Chat2C_BoardMessageResponse,ChatRoute
+{
+ string Message = 1;
+}
+message Chat2C_BoardMessageResponse //ICustomRouteResponse
+{
+ //string Message = 2;
+}
+
+message Chat2C_BoardMessage // ICustomRouteMessage,ChatRoute
+{
+ string Message = 1;
+}
+
+
+
+message C2Chat_TestRequest // ICustomRouteRequest,Chat2C_TestResponse,ChatRoute
+{
+
+}
+
+message Chat2C_TestResponse // ICustomRouteResponse
+{
+
+}
+
+
+
+
+
+
+
+
+
+
+message C2G_TestMessage // IMessage
+{
+ string Tag = 1;
+}
+message C2G_TestRequest // IRequest,G2C_TestResponse
+{
+ string Tag = 1;
+}
+message G2C_TestResponse // IResponse
+{
+ string Tag = 1;
+}
+message C2G_TestRequestPushMessage // IMessage
+{
+
+}
+
+
+/// Gate服务器推送一个消息给客户端
+message G2C_PushMessage // IMessage
+{
+ string Tag = 1;
+}
+message C2G_CreateAddressableRequest // IRequest,G2C_CreateAddressableResponse
+{
+
+}
+message G2C_CreateAddressableResponse // IResponse
+{
+
+}
+message C2M_TestMessage // IAddressableRouteMessage
+{
+ string Tag = 1;
+}
+message C2M_TestRequest // IAddressableRouteRequest,M2C_TestResponse
+{
+ string Tag = 1;
+}
+message M2C_TestResponse // IAddressableRouteResponse
+{
+ string Tag = 1;
+}
+/// 通知Gate服务器创建一个Chat的Route连接
+message C2G_CreateChatRouteRequest // IRequest,G2C_CreateChatRouteResponse
+{
+
+}
+message G2C_CreateChatRouteResponse // IResponse
+{
+
+}
+/// 发送一个Route消息给Chat
+message C2Chat_TestMessage // ICustomRouteMessage,ChatRoute
+{
+ string Tag = 1;
+}
+/// 发送一个RPCRoute消息给Chat
+message C2Chat_TestMessageRequest // ICustomRouteRequest,Chat2C_TestMessageResponse,ChatRoute
+{
+ string Tag = 1;
+}
+message Chat2C_TestMessageResponse // ICustomRouteResponse
+{
+ string Tag = 1;
+}
+/// 发送一个RPC消息给Map,让Map里的Entity转移到另外一个Map上
+message C2M_MoveToMapRequest // IAddressableRouteRequest,M2C_MoveToMapResponse
+{
+
+}
+message M2C_MoveToMapResponse // IAddressableRouteResponse
+{
+
+}
+/// 发送一个消息给Gate,让Gate发送一个Addressable消息给MAP
+message C2G_SendAddressableToMap // IMessage
+{
+ string Tag = 1;
+}
+/// 发送一个消息给Chat,让Chat服务器主动推送一个RouteMessage消息给客户端
+message C2Chat_TestRequestPushMessage // ICustomRouteMessage,ChatRoute
+{
+
+}
+/// Chat服务器主动推送一个消息给客户端
+message Chat2C_PushMessage // ICustomRouteMessage,ChatRoute
+{
+ string Tag = 1;
+}
+/// 客户端发送给Gate服务器通知map服务器创建一个SubScene
+message C2G_CreateSubSceneRequest // IRequest,G2C_CreateSubSceneResponse
+{
+
+}
+message G2C_CreateSubSceneResponse // IResponse
+{
+
+}
+/// 客户端通知Gate服务器给SubScene发送一个消息
+message C2G_SendToSubSceneMessage // IMessage
+{
+
+}
+/// 客户端通知Gate服务器创建一个SubScene的Address消息
+message C2G_CreateSubSceneAddressableRequest // IRequest,G2C_CreateSubSceneAddressableResponse
+{
+
+}
+message G2C_CreateSubSceneAddressableResponse // IResponse
+{
+
+}
+/// 客户端向SubScene发送一个测试消息
+message C2SubScene_TestMessage // IAddressableRouteMessage
+{
+ string Tag = 1;
+}
\ No newline at end of file
diff --git a/GameServer/Config/NetworkProtocol/RouteType.Config b/GameServer/Config/NetworkProtocol/RouteType.Config
new file mode 100644
index 00000000..66082cf9
--- /dev/null
+++ b/GameServer/Config/NetworkProtocol/RouteType.Config
@@ -0,0 +1,3 @@
+// Route协议定义(需要定义1000以上、因为1000以内的框架预留)
+GateRoute = 1001 // Gate
+ChatRoute = 1002 // Chat
\ No newline at end of file
diff --git a/GameServer/Console/Fantasy.Console.Entity/Entry.cs b/GameServer/Console/Fantasy.Console.Entity/Entry.cs
new file mode 100644
index 00000000..7e64a7b0
--- /dev/null
+++ b/GameServer/Console/Fantasy.Console.Entity/Entry.cs
@@ -0,0 +1,72 @@
+using Fantasy.Async;
+using Fantasy.Network;
+
+namespace Fantasy.Console.Entity;
+
+public static class Entry
+{
+ private static Scene _scene;
+ private static Session _session;
+ public static async FTask Show()
+ {
+ _scene = await Fantasy.Scene.Create(SceneRuntimeType.MainThread);
+ _session = _scene.Connect(
+ "127.0.0.1:20000",
+ NetworkProtocolType.KCP,
+ OnConnectComplete,
+ OnConnectFail,
+ OnConnectDisconnect,
+ false, 5000);
+ }
+
+ private static void OnConnectComplete()
+ {
+ Log.Debug("连接成功");
+ // Session.AddComponent();
+ // 添加心跳组件给Session。
+ // Start(2000)就是2000毫秒。
+ _session.AddComponent().Start(2000);
+
+ // _session.Send(new C2G_TestMessage()
+ // {
+ // Tag = "111111111111"
+ // });
+ TestSend1000().Coroutine();
+ }
+
+ private static int Index;
+ private static async FTask TestSend1000()
+ {
+ Log.Debug($"Call 1{Thread.CurrentThread.ManagedThreadId}");
+
+ await _session.Call(new C2G_TestRequest()
+ {
+ Tag = "111"
+ });
+
+ Log.Debug($"Call 2{Thread.CurrentThread.ManagedThreadId}");
+
+ // _session.Dispose();
+
+ // for (int i = 0; i < 1000; i++)
+ // {
+ // _session.Send(new C2G_TestMessage()
+ // {
+ // Tag = $"{++Index}"
+ // });
+ // // }
+ // await _session.Scene.TimerComponent.Net.WaitAsync(3000);
+ // _session.Dispose();
+ await FTask.CompletedTask;
+ }
+
+ private static void OnConnectFail()
+ {
+ Log.Debug("连接失败");
+ }
+
+ private static void OnConnectDisconnect()
+ {
+ Log.Debug("连接断开");
+ }
+}
\ No newline at end of file
diff --git a/GameServer/Console/Fantasy.Console.Entity/Fantasy.Console.Entity.csproj b/GameServer/Console/Fantasy.Console.Entity/Fantasy.Console.Entity.csproj
new file mode 100644
index 00000000..84df74ca
--- /dev/null
+++ b/GameServer/Console/Fantasy.Console.Entity/Fantasy.Console.Entity.csproj
@@ -0,0 +1,13 @@
+
+
+
+ net8.0
+ enable
+ enable
+
+
+
+
+
+
+
diff --git a/GameServer/Console/Fantasy.Console.Entity/NetworkProtocol/OuterMessage.cs b/GameServer/Console/Fantasy.Console.Entity/NetworkProtocol/OuterMessage.cs
new file mode 100644
index 00000000..00f98e51
--- /dev/null
+++ b/GameServer/Console/Fantasy.Console.Entity/NetworkProtocol/OuterMessage.cs
@@ -0,0 +1,271 @@
+using ProtoBuf;
+
+using System.Collections.Generic;
+using Fantasy;
+using Fantasy.Network.Interface;
+using Fantasy.Serialize;
+#pragma warning disable CS8618
+
+namespace Fantasy
+{
+ [ProtoContract]
+ public partial class C2G_TestMessage : AMessage, IMessage, IProto
+ {
+ public static C2G_TestMessage Create(Scene scene)
+ {
+ return scene.MessagePoolComponent.Rent();
+ }
+ public override void Dispose()
+ {
+ Tag = default;
+#if FANTASY_NET || FANTASY_UNITY
+ GetScene().MessagePoolComponent.Return(this);
+#endif
+ }
+ public uint OpCode() { return OuterOpcode.C2G_TestMessage; }
+ [ProtoMember(1)]
+ public string Tag { get; set; }
+ }
+ [ProtoContract]
+ public partial class C2G_TestRequest : AMessage, IRequest, IProto
+ {
+ public static C2G_TestRequest Create(Scene scene)
+ {
+ return scene.MessagePoolComponent.Rent();
+ }
+ public override void Dispose()
+ {
+ Tag = default;
+#if FANTASY_NET || FANTASY_UNITY
+ GetScene().MessagePoolComponent.Return(this);
+#endif
+ }
+ [ProtoIgnore]
+ public G2C_TestResponse ResponseType { get; set; }
+ public uint OpCode() { return OuterOpcode.C2G_TestRequest; }
+ [ProtoMember(1)]
+ public string Tag { get; set; }
+ }
+ [ProtoContract]
+ public partial class G2C_TestResponse : AMessage, IResponse, IProto
+ {
+ public static G2C_TestResponse Create(Scene scene)
+ {
+ return scene.MessagePoolComponent.Rent();
+ }
+ public override void Dispose()
+ {
+ ErrorCode = default;
+ Tag = default;
+#if FANTASY_NET || FANTASY_UNITY
+ GetScene().MessagePoolComponent.Return(this);
+#endif
+ }
+ public uint OpCode() { return OuterOpcode.G2C_TestResponse; }
+ [ProtoMember(1)]
+ public string Tag { get; set; }
+ [ProtoMember(2)]
+ public uint ErrorCode { get; set; }
+ }
+ [ProtoContract]
+ public partial class C2G_CreateAddressableRequest : AMessage, IRequest, IProto
+ {
+ public static C2G_CreateAddressableRequest Create(Scene scene)
+ {
+ return scene.MessagePoolComponent.Rent();
+ }
+ public override void Dispose()
+ {
+#if FANTASY_NET || FANTASY_UNITY
+ GetScene().MessagePoolComponent.Return(this);
+#endif
+ }
+ [ProtoIgnore]
+ public G2C_CreateAddressableResponse ResponseType { get; set; }
+ public uint OpCode() { return OuterOpcode.C2G_CreateAddressableRequest; }
+ }
+ [ProtoContract]
+ public partial class G2C_CreateAddressableResponse : AMessage, IResponse, IProto
+ {
+ public static G2C_CreateAddressableResponse Create(Scene scene)
+ {
+ return scene.MessagePoolComponent.Rent();
+ }
+ public override void Dispose()
+ {
+ ErrorCode = default;
+#if FANTASY_NET || FANTASY_UNITY
+ GetScene().MessagePoolComponent.Return(this);
+#endif
+ }
+ public uint OpCode() { return OuterOpcode.G2C_CreateAddressableResponse; }
+ [ProtoMember(1)]
+ public uint ErrorCode { get; set; }
+ }
+ [ProtoContract]
+ public partial class C2M_TestMessage : AMessage, IAddressableRouteMessage, IProto
+ {
+ public static C2M_TestMessage Create(Scene scene)
+ {
+ return scene.MessagePoolComponent.Rent();
+ }
+ public override void Dispose()
+ {
+ Tag = default;
+#if FANTASY_NET || FANTASY_UNITY
+ GetScene().MessagePoolComponent.Return(this);
+#endif
+ }
+ public uint OpCode() { return OuterOpcode.C2M_TestMessage; }
+ [ProtoMember(1)]
+ public string Tag { get; set; }
+ }
+ [ProtoContract]
+ public partial class C2M_TestRequest : AMessage, IAddressableRouteRequest, IProto
+ {
+ public static C2M_TestRequest Create(Scene scene)
+ {
+ return scene.MessagePoolComponent.Rent();
+ }
+ public override void Dispose()
+ {
+ Tag = default;
+#if FANTASY_NET || FANTASY_UNITY
+ GetScene().MessagePoolComponent.Return(this);
+#endif
+ }
+ [ProtoIgnore]
+ public M2C_TestResponse ResponseType { get; set; }
+ public uint OpCode() { return OuterOpcode.C2M_TestRequest; }
+ [ProtoMember(1)]
+ public string Tag { get; set; }
+ }
+ [ProtoContract]
+ public partial class M2C_TestResponse : AMessage, IAddressableRouteResponse, IProto
+ {
+ public static M2C_TestResponse Create(Scene scene)
+ {
+ return scene.MessagePoolComponent.Rent();
+ }
+ public override void Dispose()
+ {
+ ErrorCode = default;
+ Tag = default;
+#if FANTASY_NET || FANTASY_UNITY
+ GetScene().MessagePoolComponent.Return(this);
+#endif
+ }
+ public uint OpCode() { return OuterOpcode.M2C_TestResponse; }
+ [ProtoMember(1)]
+ public string Tag { get; set; }
+ [ProtoMember(2)]
+ public uint ErrorCode { get; set; }
+ }
+ ///
+ /// 通知Gate服务器创建一个Chat的Route连接
+ ///
+ [ProtoContract]
+ public partial class C2G_CreateChatRouteRequest : AMessage, IRequest, IProto
+ {
+ public static C2G_CreateChatRouteRequest Create(Scene scene)
+ {
+ return scene.MessagePoolComponent.Rent();
+ }
+ public override void Dispose()
+ {
+#if FANTASY_NET || FANTASY_UNITY
+ GetScene().MessagePoolComponent.Return(this);
+#endif
+ }
+ [ProtoIgnore]
+ public G2C_CreateChatRouteResponse ResponseType { get; set; }
+ public uint OpCode() { return OuterOpcode.C2G_CreateChatRouteRequest; }
+ }
+ [ProtoContract]
+ public partial class G2C_CreateChatRouteResponse : AMessage, IResponse, IProto
+ {
+ public static G2C_CreateChatRouteResponse Create(Scene scene)
+ {
+ return scene.MessagePoolComponent.Rent();
+ }
+ public override void Dispose()
+ {
+ ErrorCode = default;
+#if FANTASY_NET || FANTASY_UNITY
+ GetScene().MessagePoolComponent.Return(this);
+#endif
+ }
+ public uint OpCode() { return OuterOpcode.G2C_CreateChatRouteResponse; }
+ [ProtoMember(1)]
+ public uint ErrorCode { get; set; }
+ }
+ ///
+ /// 发送一个Route消息给Chat
+ ///
+ [ProtoContract]
+ public partial class C2Chat_TestMessage : AMessage, ICustomRouteMessage, IProto
+ {
+ public static C2Chat_TestMessage Create(Scene scene)
+ {
+ return scene.MessagePoolComponent.Rent();
+ }
+ public override void Dispose()
+ {
+ Tag = default;
+#if FANTASY_NET || FANTASY_UNITY
+ GetScene().MessagePoolComponent.Return(this);
+#endif
+ }
+ public uint OpCode() { return OuterOpcode.C2Chat_TestMessage; }
+ [ProtoIgnore]
+ public int RouteType => Fantasy.RouteType.ChatRoute;
+ [ProtoMember(1)]
+ public string Tag { get; set; }
+ }
+ ///
+ /// 发送一个RPCRoute消息给Chat
+ ///
+ [ProtoContract]
+ public partial class C2Chat_TestMessageRequest : AMessage, ICustomRouteRequest, IProto
+ {
+ public static C2Chat_TestMessageRequest Create(Scene scene)
+ {
+ return scene.MessagePoolComponent.Rent();
+ }
+ public override void Dispose()
+ {
+ Tag = default;
+#if FANTASY_NET || FANTASY_UNITY
+ GetScene().MessagePoolComponent.Return(this);
+#endif
+ }
+ [ProtoIgnore]
+ public Chat2C_TestMessageResponse ResponseType { get; set; }
+ public uint OpCode() { return OuterOpcode.C2Chat_TestMessageRequest; }
+ [ProtoIgnore]
+ public int RouteType => Fantasy.RouteType.ChatRoute;
+ [ProtoMember(1)]
+ public string Tag { get; set; }
+ }
+ [ProtoContract]
+ public partial class Chat2C_TestMessageResponse : AMessage, ICustomRouteResponse, IProto
+ {
+ public static Chat2C_TestMessageResponse Create(Scene scene)
+ {
+ return scene.MessagePoolComponent.Rent();
+ }
+ public override void Dispose()
+ {
+ ErrorCode = default;
+ Tag = default;
+#if FANTASY_NET || FANTASY_UNITY
+ GetScene().MessagePoolComponent.Return(this);
+#endif
+ }
+ public uint OpCode() { return OuterOpcode.Chat2C_TestMessageResponse; }
+ [ProtoMember(1)]
+ public string Tag { get; set; }
+ [ProtoMember(2)]
+ public uint ErrorCode { get; set; }
+ }
+}
diff --git a/GameServer/Console/Fantasy.Console.Entity/NetworkProtocol/OuterMessage.cs.meta b/GameServer/Console/Fantasy.Console.Entity/NetworkProtocol/OuterMessage.cs.meta
new file mode 100644
index 00000000..37858101
--- /dev/null
+++ b/GameServer/Console/Fantasy.Console.Entity/NetworkProtocol/OuterMessage.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 847fa983533504fa582ae1d626226805
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/GameServer/Console/Fantasy.Console.Entity/NetworkProtocol/OuterOpcode.cs b/GameServer/Console/Fantasy.Console.Entity/NetworkProtocol/OuterOpcode.cs
new file mode 100644
index 00000000..084e1b64
--- /dev/null
+++ b/GameServer/Console/Fantasy.Console.Entity/NetworkProtocol/OuterOpcode.cs
@@ -0,0 +1,19 @@
+namespace Fantasy
+{
+ public static partial class OuterOpcode
+ {
+ public const uint C2G_TestMessage = 134227729;
+ public const uint C2G_TestRequest = 268445457;
+ public const uint G2C_TestResponse = 402663185;
+ public const uint C2G_CreateAddressableRequest = 268445458;
+ public const uint G2C_CreateAddressableResponse = 402663186;
+ public const uint C2M_TestMessage = 1342187281;
+ public const uint C2M_TestRequest = 1476405009;
+ public const uint M2C_TestResponse = 1610622737;
+ public const uint C2G_CreateChatRouteRequest = 268445459;
+ public const uint G2C_CreateChatRouteResponse = 402663187;
+ public const uint C2Chat_TestMessage = 2147493649;
+ public const uint C2Chat_TestMessageRequest = 2281711377;
+ public const uint Chat2C_TestMessageResponse = 2415929105;
+ }
+}
diff --git a/GameServer/Console/Fantasy.Console.Entity/NetworkProtocol/OuterOpcode.cs.meta b/GameServer/Console/Fantasy.Console.Entity/NetworkProtocol/OuterOpcode.cs.meta
new file mode 100644
index 00000000..5ffd713b
--- /dev/null
+++ b/GameServer/Console/Fantasy.Console.Entity/NetworkProtocol/OuterOpcode.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 70749fc21de3a4fe69e5ad35d22d31f3
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/GameServer/Console/Fantasy.Console.Entity/NetworkProtocol/RouteType.cs b/GameServer/Console/Fantasy.Console.Entity/NetworkProtocol/RouteType.cs
new file mode 100644
index 00000000..cdd0df00
--- /dev/null
+++ b/GameServer/Console/Fantasy.Console.Entity/NetworkProtocol/RouteType.cs
@@ -0,0 +1,9 @@
+namespace Fantasy
+{
+ // Route协议定义(需要定义1000以上、因为1000以内的框架预留)
+ public static class RouteType
+ {
+ public const int GateRoute = 1001; // Gate
+ public const int ChatRoute = 1002; // Chat
+ }
+}
diff --git a/GameServer/Console/Fantasy.Console.Entity/NetworkProtocol/RouteType.cs.meta b/GameServer/Console/Fantasy.Console.Entity/NetworkProtocol/RouteType.cs.meta
new file mode 100644
index 00000000..de101869
--- /dev/null
+++ b/GameServer/Console/Fantasy.Console.Entity/NetworkProtocol/RouteType.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 20284fcf76b71405fb83dfc6f73048dd
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/GameServer/Console/Fantasy.Console.Main/ConsoleLog.cs b/GameServer/Console/Fantasy.Console.Main/ConsoleLog.cs
new file mode 100644
index 00000000..4fa540fb
--- /dev/null
+++ b/GameServer/Console/Fantasy.Console.Main/ConsoleLog.cs
@@ -0,0 +1,138 @@
+
+#pragma warning disable CS1591 // Missing XML comment for publicly visible type or member
+
+namespace Fantasy
+{
+ ///
+ /// 标准的控制台Log
+ ///
+ public sealed class ConsoleLog : ILog
+ {
+
+ ///
+ /// 记录跟踪级别的日志消息。
+ ///
+ /// 日志消息。
+ public void Trace(string message)
+ {
+ System.Console.ForegroundColor = ConsoleColor.White;
+ System.Console.WriteLine(message);
+ }
+
+ ///
+ /// 记录警告级别的日志消息。
+ ///
+ /// 日志消息。
+ public void Warning(string message)
+ {
+ System.Console.ForegroundColor = ConsoleColor.Yellow;
+ System.Console.WriteLine(message);
+ }
+
+ ///
+ /// 记录信息级别的日志消息。
+ ///
+ /// 日志消息。
+ public void Info(string message)
+ {
+ System.Console.ForegroundColor = ConsoleColor.Gray;
+ System.Console.WriteLine(message);
+ }
+
+ ///
+ /// 记录调试级别的日志消息。
+ ///
+ /// 日志消息。
+ public void Debug(string message)
+ {
+ System.Console.ForegroundColor = ConsoleColor.DarkGreen;
+ System.Console.WriteLine(message);
+ }
+
+ ///
+ /// 记录错误级别的日志消息。
+ ///
+ /// 日志消息。
+ public void Error(string message)
+ {
+ System.Console.ForegroundColor = ConsoleColor.DarkRed;
+ System.Console.WriteLine(message);
+ }
+
+ ///
+ /// 记录严重错误级别的日志消息。
+ ///
+ /// 日志消息。
+ public void Fatal(string message)
+ {
+ System.Console.ForegroundColor = ConsoleColor.Red;
+ System.Console.WriteLine(message);
+ }
+
+ ///
+ /// 记录跟踪级别的格式化日志消息。
+ ///
+ /// 日志消息模板。
+ /// 格式化参数。
+ public void Trace(string message, params object[] args)
+ {
+ System.Console.ForegroundColor = ConsoleColor.White;
+ System.Console.WriteLine(message, args);
+ }
+
+ ///
+ /// 记录警告级别的格式化日志消息。
+ ///
+ /// 日志消息模板。
+ /// 格式化参数。
+ public void Warning(string message, params object[] args)
+ {
+ System.Console.ForegroundColor = ConsoleColor.Yellow;
+ System.Console.WriteLine(message, args);
+ }
+
+ ///
+ /// 记录信息级别的格式化日志消息。
+ ///
+ /// 日志消息模板。
+ /// 格式化参数。
+ public void Info(string message, params object[] args)
+ {
+ System.Console.ForegroundColor = ConsoleColor.Gray;
+ System.Console.WriteLine(message, args);
+ }
+
+ ///
+ /// 记录调试级别的格式化日志消息。
+ ///
+ /// 日志消息模板。
+ /// 格式化参数。
+ public void Debug(string message, params object[] args)
+ {
+ System.Console.ForegroundColor = ConsoleColor.DarkGreen;
+ System.Console.WriteLine(message, args);
+ }
+
+ ///
+ /// 记录错误级别的格式化日志消息。
+ ///
+ /// 日志消息模板。
+ /// 格式化参数。
+ public void Error(string message, params object[] args)
+ {
+ System.Console.ForegroundColor = ConsoleColor.DarkRed;
+ System.Console.WriteLine(message, args);
+ }
+
+ ///
+ /// 记录严重错误级别的格式化日志消息。
+ ///
+ /// 日志消息模板。
+ /// 格式化参数。
+ public void Fatal(string message, params object[] args)
+ {
+ System.Console.ForegroundColor = ConsoleColor.Red;
+ System.Console.WriteLine(message, args);
+ }
+ }
+}
\ No newline at end of file
diff --git a/GameServer/Console/Fantasy.Console.Main/Fantasy.Console.Main.csproj b/GameServer/Console/Fantasy.Console.Main/Fantasy.Console.Main.csproj
new file mode 100644
index 00000000..c17a2faa
--- /dev/null
+++ b/GameServer/Console/Fantasy.Console.Main/Fantasy.Console.Main.csproj
@@ -0,0 +1,14 @@
+
+
+
+ Exe
+ net8.0
+ enable
+ enable
+
+
+
+
+
+
+
diff --git a/GameServer/Console/Fantasy.Console.Main/Program.cs b/GameServer/Console/Fantasy.Console.Main/Program.cs
new file mode 100644
index 00000000..d92ae4f3
--- /dev/null
+++ b/GameServer/Console/Fantasy.Console.Main/Program.cs
@@ -0,0 +1,10 @@
+using Fantasy;
+using Fantasy.Console.Entity;
+
+SynchronizationContext.SetSynchronizationContext(new SynchronizationContext());
+Fantasy.Log.Register(new ConsoleLog());
+Fantasy.Platform.Console.Entry.Initialize(typeof(Fantasy.Console.Entity.Entry).Assembly);
+Fantasy.Platform.Console.Entry.StartUpdate();
+Log.Debug($"{Thread.CurrentThread.ManagedThreadId} SynchronizationContext.Current:{SynchronizationContext.Current}");
+Entry.Show().Coroutine();
+Console.ReadKey();
\ No newline at end of file
diff --git a/GameServer/Console/Fantasy.Console.sln b/GameServer/Console/Fantasy.Console.sln
new file mode 100644
index 00000000..847049bc
--- /dev/null
+++ b/GameServer/Console/Fantasy.Console.sln
@@ -0,0 +1,28 @@
+
+Microsoft Visual Studio Solution File, Format Version 12.00
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Fantasy.Console.Main", "Fantasy.Console.Main\Fantasy.Console.Main.csproj", "{2FADD1FD-805B-4234-A70D-0C9085EEEF77}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Fantasy.Console.Entity", "Fantasy.Console.Entity\Fantasy.Console.Entity.csproj", "{F1FE5BEA-DA59-4B49-863E-3344F43357A7}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Fantasy.Console", "..\..\Fantays.Console\Fantasy.Console.csproj", "{0D88EEBF-7249-4E7A-89F0-C376012A9297}"
+EndProject
+Global
+ GlobalSection(SolutionConfigurationPlatforms) = preSolution
+ Debug|Any CPU = Debug|Any CPU
+ Release|Any CPU = Release|Any CPU
+ EndGlobalSection
+ GlobalSection(ProjectConfigurationPlatforms) = postSolution
+ {2FADD1FD-805B-4234-A70D-0C9085EEEF77}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {2FADD1FD-805B-4234-A70D-0C9085EEEF77}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {2FADD1FD-805B-4234-A70D-0C9085EEEF77}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {2FADD1FD-805B-4234-A70D-0C9085EEEF77}.Release|Any CPU.Build.0 = Release|Any CPU
+ {F1FE5BEA-DA59-4B49-863E-3344F43357A7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {F1FE5BEA-DA59-4B49-863E-3344F43357A7}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {F1FE5BEA-DA59-4B49-863E-3344F43357A7}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {F1FE5BEA-DA59-4B49-863E-3344F43357A7}.Release|Any CPU.Build.0 = Release|Any CPU
+ {0D88EEBF-7249-4E7A-89F0-C376012A9297}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {0D88EEBF-7249-4E7A-89F0-C376012A9297}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {0D88EEBF-7249-4E7A-89F0-C376012A9297}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {0D88EEBF-7249-4E7A-89F0-C376012A9297}.Release|Any CPU.Build.0 = Release|Any CPU
+ EndGlobalSection
+EndGlobal
diff --git a/GameServer/Console/Fantasy.Console.sln.DotSettings.user b/GameServer/Console/Fantasy.Console.sln.DotSettings.user
new file mode 100644
index 00000000..3a437ed4
--- /dev/null
+++ b/GameServer/Console/Fantasy.Console.sln.DotSettings.user
@@ -0,0 +1,3 @@
+
+ ForceIncluded
+ ForceIncluded
\ No newline at end of file
diff --git a/GameServer/Main/Main.csproj b/GameServer/Main/Main.csproj
new file mode 100644
index 00000000..85b49591
--- /dev/null
+++ b/GameServer/Main/Main.csproj
@@ -0,0 +1,10 @@
+
+
+
+ Exe
+ net9.0
+ enable
+ enable
+
+
+
diff --git a/GameServer/Main/Program.cs b/GameServer/Main/Program.cs
new file mode 100644
index 00000000..e5dff12b
--- /dev/null
+++ b/GameServer/Main/Program.cs
@@ -0,0 +1,3 @@
+// See https://aka.ms/new-console-template for more information
+
+Console.WriteLine("Hello, World!");
\ No newline at end of file
diff --git a/GameServer/Main/obj/Debug/net9.0/.NETCoreApp,Version=v9.0.AssemblyAttributes.cs b/GameServer/Main/obj/Debug/net9.0/.NETCoreApp,Version=v9.0.AssemblyAttributes.cs
new file mode 100644
index 00000000..feda5e9f
--- /dev/null
+++ b/GameServer/Main/obj/Debug/net9.0/.NETCoreApp,Version=v9.0.AssemblyAttributes.cs
@@ -0,0 +1,4 @@
+//
+using System;
+using System.Reflection;
+[assembly: global::System.Runtime.Versioning.TargetFrameworkAttribute(".NETCoreApp,Version=v9.0", FrameworkDisplayName = ".NET 9.0")]
diff --git a/GameServer/Main/obj/Debug/net9.0/Main.AssemblyInfo.cs b/GameServer/Main/obj/Debug/net9.0/Main.AssemblyInfo.cs
new file mode 100644
index 00000000..49fd7ea6
--- /dev/null
+++ b/GameServer/Main/obj/Debug/net9.0/Main.AssemblyInfo.cs
@@ -0,0 +1,23 @@
+//------------------------------------------------------------------------------
+//
+// 此代码由工具生成。
+// 运行时版本:4.0.30319.42000
+//
+// 对此文件的更改可能会导致不正确的行为,并且如果
+// 重新生成代码,这些更改将会丢失。
+//
+//------------------------------------------------------------------------------
+
+using System;
+using System.Reflection;
+
+[assembly: System.Reflection.AssemblyCompanyAttribute("Main")]
+[assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")]
+[assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")]
+[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+c77ba7871ef90e86cce47a22e875f550d637f257")]
+[assembly: System.Reflection.AssemblyProductAttribute("Main")]
+[assembly: System.Reflection.AssemblyTitleAttribute("Main")]
+[assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")]
+
+// 由 MSBuild WriteCodeFragment 类生成。
+
diff --git a/GameServer/Main/obj/Debug/net9.0/Main.AssemblyInfoInputs.cache b/GameServer/Main/obj/Debug/net9.0/Main.AssemblyInfoInputs.cache
new file mode 100644
index 00000000..676137d3
--- /dev/null
+++ b/GameServer/Main/obj/Debug/net9.0/Main.AssemblyInfoInputs.cache
@@ -0,0 +1 @@
+2f768a2aa1e0aaf52c119eb7a7d0345bb3efceeb3a848e62515fbdfd5f40e0f7
diff --git a/GameServer/Main/obj/Debug/net9.0/Main.GeneratedMSBuildEditorConfig.editorconfig b/GameServer/Main/obj/Debug/net9.0/Main.GeneratedMSBuildEditorConfig.editorconfig
new file mode 100644
index 00000000..13602f90
--- /dev/null
+++ b/GameServer/Main/obj/Debug/net9.0/Main.GeneratedMSBuildEditorConfig.editorconfig
@@ -0,0 +1,15 @@
+is_global = true
+build_property.TargetFramework = net9.0
+build_property.TargetPlatformMinVersion =
+build_property.UsingMicrosoftNETSdkWeb =
+build_property.ProjectTypeGuids =
+build_property.InvariantGlobalization =
+build_property.PlatformNeutralAssembly =
+build_property.EnforceExtendedAnalyzerRules =
+build_property._SupportedPlatformList = Linux,macOS,Windows
+build_property.RootNamespace = Main
+build_property.ProjectDir = E:\UnityProject\TE_AR\GameServer\Main\
+build_property.EnableComHosting =
+build_property.EnableGeneratedComInterfaceComImportInterop =
+build_property.EffectiveAnalysisLevelStyle = 9.0
+build_property.EnableCodeStyleSeverity =
diff --git a/GameServer/Main/obj/Debug/net9.0/Main.GlobalUsings.g.cs b/GameServer/Main/obj/Debug/net9.0/Main.GlobalUsings.g.cs
new file mode 100644
index 00000000..8578f3d0
--- /dev/null
+++ b/GameServer/Main/obj/Debug/net9.0/Main.GlobalUsings.g.cs
@@ -0,0 +1,8 @@
+//
+global using global::System;
+global using global::System.Collections.Generic;
+global using global::System.IO;
+global using global::System.Linq;
+global using global::System.Net.Http;
+global using global::System.Threading;
+global using global::System.Threading.Tasks;
diff --git a/GameServer/Main/obj/Debug/net9.0/Main.assets.cache b/GameServer/Main/obj/Debug/net9.0/Main.assets.cache
new file mode 100644
index 00000000..8dd81abf
Binary files /dev/null and b/GameServer/Main/obj/Debug/net9.0/Main.assets.cache differ
diff --git a/GameServer/Main/obj/Main.csproj.nuget.dgspec.json b/GameServer/Main/obj/Main.csproj.nuget.dgspec.json
new file mode 100644
index 00000000..067b1749
--- /dev/null
+++ b/GameServer/Main/obj/Main.csproj.nuget.dgspec.json
@@ -0,0 +1,68 @@
+{
+ "format": 1,
+ "restore": {
+ "E:\\UnityProject\\TE_AR\\GameServer\\Main\\Main.csproj": {}
+ },
+ "projects": {
+ "E:\\UnityProject\\TE_AR\\GameServer\\Main\\Main.csproj": {
+ "version": "1.0.0",
+ "restore": {
+ "projectUniqueName": "E:\\UnityProject\\TE_AR\\GameServer\\Main\\Main.csproj",
+ "projectName": "Main",
+ "projectPath": "E:\\UnityProject\\TE_AR\\GameServer\\Main\\Main.csproj",
+ "packagesPath": "C:\\Users\\Administrator\\.nuget\\packages\\",
+ "outputPath": "E:\\UnityProject\\TE_AR\\GameServer\\Main\\obj\\",
+ "projectStyle": "PackageReference",
+ "configFilePaths": [
+ "C:\\Users\\Administrator\\AppData\\Roaming\\NuGet\\NuGet.Config",
+ "C:\\Program Files (x86)\\NuGet\\Config\\Microsoft.VisualStudio.Offline.config"
+ ],
+ "originalTargetFrameworks": [
+ "net9.0"
+ ],
+ "sources": {
+ "C:\\Program Files (x86)\\Microsoft SDKs\\NuGetPackages\\": {},
+ "https://api.nuget.org/v3/index.json": {}
+ },
+ "frameworks": {
+ "net9.0": {
+ "targetAlias": "net9.0",
+ "projectReferences": {}
+ }
+ },
+ "warningProperties": {
+ "warnAsError": [
+ "NU1605"
+ ]
+ },
+ "restoreAuditProperties": {
+ "enableAudit": "true",
+ "auditLevel": "low",
+ "auditMode": "direct"
+ }
+ },
+ "frameworks": {
+ "net9.0": {
+ "targetAlias": "net9.0",
+ "imports": [
+ "net461",
+ "net462",
+ "net47",
+ "net471",
+ "net472",
+ "net48",
+ "net481"
+ ],
+ "assetTargetFallback": true,
+ "warn": true,
+ "frameworkReferences": {
+ "Microsoft.NETCore.App": {
+ "privateAssets": "all"
+ }
+ },
+ "runtimeIdentifierGraphPath": "C:\\Program Files\\dotnet\\sdk\\9.0.102/PortableRuntimeIdentifierGraph.json"
+ }
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/GameServer/Main/obj/Main.csproj.nuget.g.props b/GameServer/Main/obj/Main.csproj.nuget.g.props
new file mode 100644
index 00000000..437c4e98
--- /dev/null
+++ b/GameServer/Main/obj/Main.csproj.nuget.g.props
@@ -0,0 +1,15 @@
+
+
+
+ True
+ NuGet
+ $(MSBuildThisFileDirectory)project.assets.json
+ $(UserProfile)\.nuget\packages\
+ C:\Users\Administrator\.nuget\packages\
+ PackageReference
+ 6.10.1
+
+
+
+
+
\ No newline at end of file
diff --git a/GameServer/Main/obj/Main.csproj.nuget.g.targets b/GameServer/Main/obj/Main.csproj.nuget.g.targets
new file mode 100644
index 00000000..3dc06ef3
--- /dev/null
+++ b/GameServer/Main/obj/Main.csproj.nuget.g.targets
@@ -0,0 +1,2 @@
+
+
\ No newline at end of file
diff --git a/GameServer/Main/obj/project.assets.json b/GameServer/Main/obj/project.assets.json
new file mode 100644
index 00000000..3c833f07
--- /dev/null
+++ b/GameServer/Main/obj/project.assets.json
@@ -0,0 +1,73 @@
+{
+ "version": 3,
+ "targets": {
+ "net9.0": {}
+ },
+ "libraries": {},
+ "projectFileDependencyGroups": {
+ "net9.0": []
+ },
+ "packageFolders": {
+ "C:\\Users\\Administrator\\.nuget\\packages\\": {}
+ },
+ "project": {
+ "version": "1.0.0",
+ "restore": {
+ "projectUniqueName": "E:\\UnityProject\\TE_AR\\GameServer\\Main\\Main.csproj",
+ "projectName": "Main",
+ "projectPath": "E:\\UnityProject\\TE_AR\\GameServer\\Main\\Main.csproj",
+ "packagesPath": "C:\\Users\\Administrator\\.nuget\\packages\\",
+ "outputPath": "E:\\UnityProject\\TE_AR\\GameServer\\Main\\obj\\",
+ "projectStyle": "PackageReference",
+ "configFilePaths": [
+ "C:\\Users\\Administrator\\AppData\\Roaming\\NuGet\\NuGet.Config",
+ "C:\\Program Files (x86)\\NuGet\\Config\\Microsoft.VisualStudio.Offline.config"
+ ],
+ "originalTargetFrameworks": [
+ "net9.0"
+ ],
+ "sources": {
+ "C:\\Program Files (x86)\\Microsoft SDKs\\NuGetPackages\\": {},
+ "https://api.nuget.org/v3/index.json": {}
+ },
+ "frameworks": {
+ "net9.0": {
+ "targetAlias": "net9.0",
+ "projectReferences": {}
+ }
+ },
+ "warningProperties": {
+ "warnAsError": [
+ "NU1605"
+ ]
+ },
+ "restoreAuditProperties": {
+ "enableAudit": "true",
+ "auditLevel": "low",
+ "auditMode": "direct"
+ }
+ },
+ "frameworks": {
+ "net9.0": {
+ "targetAlias": "net9.0",
+ "imports": [
+ "net461",
+ "net462",
+ "net47",
+ "net471",
+ "net472",
+ "net48",
+ "net481"
+ ],
+ "assetTargetFallback": true,
+ "warn": true,
+ "frameworkReferences": {
+ "Microsoft.NETCore.App": {
+ "privateAssets": "all"
+ }
+ },
+ "runtimeIdentifierGraphPath": "C:\\Program Files\\dotnet\\sdk\\9.0.102/PortableRuntimeIdentifierGraph.json"
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/GameServer/Main/obj/project.nuget.cache b/GameServer/Main/obj/project.nuget.cache
new file mode 100644
index 00000000..cafe797f
--- /dev/null
+++ b/GameServer/Main/obj/project.nuget.cache
@@ -0,0 +1,8 @@
+{
+ "version": 2,
+ "dgSpecHash": "VV8VmuEt8WI=",
+ "success": true,
+ "projectFilePath": "E:\\UnityProject\\TE_AR\\GameServer\\Main\\Main.csproj",
+ "expectedPackageFiles": [],
+ "logs": []
+}
\ No newline at end of file
diff --git a/GameServer/Main/obj/project.packagespec.json b/GameServer/Main/obj/project.packagespec.json
new file mode 100644
index 00000000..4f093cd8
--- /dev/null
+++ b/GameServer/Main/obj/project.packagespec.json
@@ -0,0 +1 @@
+"restore":{"projectUniqueName":"E:\\UnityProject\\TE_AR\\GameServer\\Main\\Main.csproj","projectName":"Main","projectPath":"E:\\UnityProject\\TE_AR\\GameServer\\Main\\Main.csproj","outputPath":"E:\\UnityProject\\TE_AR\\GameServer\\Main\\obj\\","projectStyle":"PackageReference","originalTargetFrameworks":["net9.0"],"sources":{"C:\\Program Files (x86)\\Microsoft SDKs\\NuGetPackages\\":{},"https://api.nuget.org/v3/index.json":{}},"frameworks":{"net9.0":{"targetAlias":"net9.0","projectReferences":{}}},"warningProperties":{"warnAsError":["NU1605"]},"restoreAuditProperties":{"enableAudit":"true","auditLevel":"low","auditMode":"direct"}}"frameworks":{"net9.0":{"targetAlias":"net9.0","imports":["net461","net462","net47","net471","net472","net48","net481"],"assetTargetFallback":true,"warn":true,"frameworkReferences":{"Microsoft.NETCore.App":{"privateAssets":"all"}},"runtimeIdentifierGraphPath":"C:\\Program Files\\dotnet\\sdk\\9.0.102/PortableRuntimeIdentifierGraph.json"}}
\ No newline at end of file
diff --git a/GameServer/Main/obj/rider.project.model.nuget.info b/GameServer/Main/obj/rider.project.model.nuget.info
new file mode 100644
index 00000000..04d6a174
--- /dev/null
+++ b/GameServer/Main/obj/rider.project.model.nuget.info
@@ -0,0 +1 @@
+17370234533638474
\ No newline at end of file
diff --git a/GameServer/Main/obj/rider.project.restore.info b/GameServer/Main/obj/rider.project.restore.info
new file mode 100644
index 00000000..04d6a174
--- /dev/null
+++ b/GameServer/Main/obj/rider.project.restore.info
@@ -0,0 +1 @@
+17370234533638474
\ No newline at end of file
diff --git a/GameServer/Server/.idea/.idea.GameServer/.idea/.gitignore b/GameServer/Server/.idea/.idea.GameServer/.idea/.gitignore
new file mode 100644
index 00000000..ca4ab353
--- /dev/null
+++ b/GameServer/Server/.idea/.idea.GameServer/.idea/.gitignore
@@ -0,0 +1,13 @@
+# Default ignored files
+/shelf/
+/workspace.xml
+# Rider ignored files
+/.idea.GameServer.iml
+/modules.xml
+/projectSettingsUpdater.xml
+/contentModel.xml
+# Editor-based HTTP Client requests
+/httpRequests/
+# Datasource local storage ignored files
+/dataSources/
+/dataSources.local.xml
diff --git a/GameServer/Server/.idea/.idea.GameServer/.idea/.name b/GameServer/Server/.idea/.idea.GameServer/.idea/.name
new file mode 100644
index 00000000..6a4412f1
--- /dev/null
+++ b/GameServer/Server/.idea/.idea.GameServer/.idea/.name
@@ -0,0 +1 @@
+GameServer
\ No newline at end of file
diff --git a/GameServer/Server/.idea/.idea.GameServer/.idea/CopilotChatHistory.xml b/GameServer/Server/.idea/.idea.GameServer/.idea/CopilotChatHistory.xml
new file mode 100644
index 00000000..62b74a49
--- /dev/null
+++ b/GameServer/Server/.idea/.idea.GameServer/.idea/CopilotChatHistory.xml
@@ -0,0 +1,45 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/GameServer/Server/.idea/.idea.GameServer/.idea/deployment.xml b/GameServer/Server/.idea/.idea.GameServer/.idea/deployment.xml
new file mode 100644
index 00000000..9631dcc8
--- /dev/null
+++ b/GameServer/Server/.idea/.idea.GameServer/.idea/deployment.xml
@@ -0,0 +1,16 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/GameServer/Server/.idea/.idea.GameServer/.idea/encodings.xml b/GameServer/Server/.idea/.idea.GameServer/.idea/encodings.xml
new file mode 100644
index 00000000..df87cf95
--- /dev/null
+++ b/GameServer/Server/.idea/.idea.GameServer/.idea/encodings.xml
@@ -0,0 +1,4 @@
+
+
+
+
\ No newline at end of file
diff --git a/GameServer/Server/.idea/.idea.GameServer/.idea/indexLayout.xml b/GameServer/Server/.idea/.idea.GameServer/.idea/indexLayout.xml
new file mode 100644
index 00000000..add94f43
--- /dev/null
+++ b/GameServer/Server/.idea/.idea.GameServer/.idea/indexLayout.xml
@@ -0,0 +1,11 @@
+
+
+
+
+ ../Config
+ ../Config/NetworkProtocol
+
+
+
+
+
\ No newline at end of file
diff --git a/GameServer/Server/.idea/.idea.GameServer/.idea/sshConfigs.xml b/GameServer/Server/.idea/.idea.GameServer/.idea/sshConfigs.xml
new file mode 100644
index 00000000..50ff0fbe
--- /dev/null
+++ b/GameServer/Server/.idea/.idea.GameServer/.idea/sshConfigs.xml
@@ -0,0 +1,8 @@
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/GameServer/Server/.idea/.idea.GameServer/.idea/vcs.xml b/GameServer/Server/.idea/.idea.GameServer/.idea/vcs.xml
new file mode 100644
index 00000000..b2bdec2d
--- /dev/null
+++ b/GameServer/Server/.idea/.idea.GameServer/.idea/vcs.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/GameServer/Server/.idea/.idea.GameServer/.idea/webServers.xml b/GameServer/Server/.idea/.idea.GameServer/.idea/webServers.xml
new file mode 100644
index 00000000..d3166184
--- /dev/null
+++ b/GameServer/Server/.idea/.idea.GameServer/.idea/webServers.xml
@@ -0,0 +1,14 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/GameServer/Server/.vs/GameServer/DesignTimeBuild/.dtbcache.v2 b/GameServer/Server/.vs/GameServer/DesignTimeBuild/.dtbcache.v2
new file mode 100644
index 00000000..59185afe
Binary files /dev/null and b/GameServer/Server/.vs/GameServer/DesignTimeBuild/.dtbcache.v2 differ
diff --git a/GameServer/Server/.vs/GameServer/FileContentIndex/02337ab6-ac65-4c33-aba9-0a893e08a6fd.vsidx b/GameServer/Server/.vs/GameServer/FileContentIndex/02337ab6-ac65-4c33-aba9-0a893e08a6fd.vsidx
new file mode 100644
index 00000000..70aef67a
Binary files /dev/null and b/GameServer/Server/.vs/GameServer/FileContentIndex/02337ab6-ac65-4c33-aba9-0a893e08a6fd.vsidx differ
diff --git a/GameServer/Server/.vs/GameServer/FileContentIndex/e7946b6b-af37-4064-bfde-5bf32f813bd6.vsidx b/GameServer/Server/.vs/GameServer/FileContentIndex/e7946b6b-af37-4064-bfde-5bf32f813bd6.vsidx
new file mode 100644
index 00000000..cc1462dd
Binary files /dev/null and b/GameServer/Server/.vs/GameServer/FileContentIndex/e7946b6b-af37-4064-bfde-5bf32f813bd6.vsidx differ
diff --git a/GameServer/Server/.vs/GameServer/FileContentIndex/f09d1882-9418-4756-a216-6f48af18b13e.vsidx b/GameServer/Server/.vs/GameServer/FileContentIndex/f09d1882-9418-4756-a216-6f48af18b13e.vsidx
new file mode 100644
index 00000000..578f6c15
Binary files /dev/null and b/GameServer/Server/.vs/GameServer/FileContentIndex/f09d1882-9418-4756-a216-6f48af18b13e.vsidx differ
diff --git a/GameServer/Server/.vs/GameServer/v17/.futdcache.v2 b/GameServer/Server/.vs/GameServer/v17/.futdcache.v2
new file mode 100644
index 00000000..08f38ef0
Binary files /dev/null and b/GameServer/Server/.vs/GameServer/v17/.futdcache.v2 differ
diff --git a/GameServer/Server/.vs/GameServer/v17/.suo b/GameServer/Server/.vs/GameServer/v17/.suo
new file mode 100644
index 00000000..fbcb939a
Binary files /dev/null and b/GameServer/Server/.vs/GameServer/v17/.suo differ
diff --git a/GameServer/Server/.vs/GameServer/v17/DocumentLayout.backup.json b/GameServer/Server/.vs/GameServer/v17/DocumentLayout.backup.json
new file mode 100644
index 00000000..ac08b728
--- /dev/null
+++ b/GameServer/Server/.vs/GameServer/v17/DocumentLayout.backup.json
@@ -0,0 +1,31 @@
+{
+ "Version": 1,
+ "WorkspaceRootPath": "E:\\TE_UnityProject\\ARSelf\\EintooAR\\GameServer\\Server\\",
+ "Documents": [],
+ "DocumentGroupContainers": [
+ {
+ "Orientation": 0,
+ "VerticalTabListWidth": 256,
+ "DocumentGroups": [
+ {
+ "DockedWidth": 200,
+ "SelectedChildIndex": -1,
+ "Children": [
+ {
+ "$type": "Bookmark",
+ "Name": "ST:0:0:{d78612c7-9962-4b83-95d9-268046dad23a}"
+ },
+ {
+ "$type": "Bookmark",
+ "Name": "ST:0:0:{cce594b6-0c39-4442-ba28-10c64ac7e89f}"
+ },
+ {
+ "$type": "Bookmark",
+ "Name": "ST:0:0:{269a02dc-6af8-11d3-bdc4-00c04f688e50}"
+ }
+ ]
+ }
+ ]
+ }
+ ]
+}
\ No newline at end of file
diff --git a/GameServer/Server/.vs/GameServer/v17/DocumentLayout.json b/GameServer/Server/.vs/GameServer/v17/DocumentLayout.json
new file mode 100644
index 00000000..ac08b728
--- /dev/null
+++ b/GameServer/Server/.vs/GameServer/v17/DocumentLayout.json
@@ -0,0 +1,31 @@
+{
+ "Version": 1,
+ "WorkspaceRootPath": "E:\\TE_UnityProject\\ARSelf\\EintooAR\\GameServer\\Server\\",
+ "Documents": [],
+ "DocumentGroupContainers": [
+ {
+ "Orientation": 0,
+ "VerticalTabListWidth": 256,
+ "DocumentGroups": [
+ {
+ "DockedWidth": 200,
+ "SelectedChildIndex": -1,
+ "Children": [
+ {
+ "$type": "Bookmark",
+ "Name": "ST:0:0:{d78612c7-9962-4b83-95d9-268046dad23a}"
+ },
+ {
+ "$type": "Bookmark",
+ "Name": "ST:0:0:{cce594b6-0c39-4442-ba28-10c64ac7e89f}"
+ },
+ {
+ "$type": "Bookmark",
+ "Name": "ST:0:0:{269a02dc-6af8-11d3-bdc4-00c04f688e50}"
+ }
+ ]
+ }
+ ]
+ }
+ ]
+}
\ No newline at end of file
diff --git a/GameServer/Server/.vs/ProjectEvaluation/gameserver.metadata.v9.bin b/GameServer/Server/.vs/ProjectEvaluation/gameserver.metadata.v9.bin
new file mode 100644
index 00000000..c5a920bd
Binary files /dev/null and b/GameServer/Server/.vs/ProjectEvaluation/gameserver.metadata.v9.bin differ
diff --git a/GameServer/Server/.vs/ProjectEvaluation/gameserver.projects.v9.bin b/GameServer/Server/.vs/ProjectEvaluation/gameserver.projects.v9.bin
new file mode 100644
index 00000000..488af0b1
Binary files /dev/null and b/GameServer/Server/.vs/ProjectEvaluation/gameserver.projects.v9.bin differ
diff --git a/GameServer/Server/.vs/ProjectEvaluation/gameserver.strings.v9.bin b/GameServer/Server/.vs/ProjectEvaluation/gameserver.strings.v9.bin
new file mode 100644
index 00000000..3ba3221f
Binary files /dev/null and b/GameServer/Server/.vs/ProjectEvaluation/gameserver.strings.v9.bin differ
diff --git a/GameServer/Server/APlugins/APlugins.csproj b/GameServer/Server/APlugins/APlugins.csproj
new file mode 100644
index 00000000..e4cabbea
--- /dev/null
+++ b/GameServer/Server/APlugins/APlugins.csproj
@@ -0,0 +1,18 @@
+
+
+
+ net9.0
+ enable
+ enable
+ Plugins
+
+
+
+
+
+
+
+
+
+
+
diff --git a/GameServer/Server/APlugins/Tools/Exporter/ConfigTable/CommandLine.dll b/GameServer/Server/APlugins/Tools/Exporter/ConfigTable/CommandLine.dll
new file mode 100644
index 00000000..3eab2be2
Binary files /dev/null and b/GameServer/Server/APlugins/Tools/Exporter/ConfigTable/CommandLine.dll differ
diff --git a/GameServer/Server/APlugins/Tools/Exporter/ConfigTable/EPPlus.Interfaces.dll b/GameServer/Server/APlugins/Tools/Exporter/ConfigTable/EPPlus.Interfaces.dll
new file mode 100644
index 00000000..599a7671
Binary files /dev/null and b/GameServer/Server/APlugins/Tools/Exporter/ConfigTable/EPPlus.Interfaces.dll differ
diff --git a/GameServer/Server/APlugins/Tools/Exporter/ConfigTable/EPPlus.System.Drawing.dll b/GameServer/Server/APlugins/Tools/Exporter/ConfigTable/EPPlus.System.Drawing.dll
new file mode 100644
index 00000000..8df125ea
Binary files /dev/null and b/GameServer/Server/APlugins/Tools/Exporter/ConfigTable/EPPlus.System.Drawing.dll differ
diff --git a/GameServer/Server/APlugins/Tools/Exporter/ConfigTable/EPPlus.dll b/GameServer/Server/APlugins/Tools/Exporter/ConfigTable/EPPlus.dll
new file mode 100644
index 00000000..b09ea77b
Binary files /dev/null and b/GameServer/Server/APlugins/Tools/Exporter/ConfigTable/EPPlus.dll differ
diff --git a/GameServer/Server/APlugins/Tools/Exporter/ConfigTable/Excel/Custom.txt b/GameServer/Server/APlugins/Tools/Exporter/ConfigTable/Excel/Custom.txt
new file mode 100644
index 00000000..fd90a9bf
--- /dev/null
+++ b/GameServer/Server/APlugins/Tools/Exporter/ConfigTable/Excel/Custom.txt
@@ -0,0 +1 @@
+// 自定义导出配置文件,用于配置自定义导出自定义程序的路径
diff --git a/GameServer/Server/APlugins/Tools/Exporter/ConfigTable/Excel/Server/MachineConfig.xlsx b/GameServer/Server/APlugins/Tools/Exporter/ConfigTable/Excel/Server/MachineConfig.xlsx
new file mode 100644
index 00000000..999e9390
Binary files /dev/null and b/GameServer/Server/APlugins/Tools/Exporter/ConfigTable/Excel/Server/MachineConfig.xlsx differ
diff --git a/GameServer/Server/APlugins/Tools/Exporter/ConfigTable/Excel/Server/ProcessConfig.xlsx b/GameServer/Server/APlugins/Tools/Exporter/ConfigTable/Excel/Server/ProcessConfig.xlsx
new file mode 100644
index 00000000..001235a8
Binary files /dev/null and b/GameServer/Server/APlugins/Tools/Exporter/ConfigTable/Excel/Server/ProcessConfig.xlsx differ
diff --git a/GameServer/Server/APlugins/Tools/Exporter/ConfigTable/Excel/Server/SceneConfig.xlsx b/GameServer/Server/APlugins/Tools/Exporter/ConfigTable/Excel/Server/SceneConfig.xlsx
new file mode 100644
index 00000000..a4ca05e3
Binary files /dev/null and b/GameServer/Server/APlugins/Tools/Exporter/ConfigTable/Excel/Server/SceneConfig.xlsx differ
diff --git a/GameServer/Server/APlugins/Tools/Exporter/ConfigTable/Excel/Server/WorldConfig.xlsx b/GameServer/Server/APlugins/Tools/Exporter/ConfigTable/Excel/Server/WorldConfig.xlsx
new file mode 100644
index 00000000..8194c9a5
Binary files /dev/null and b/GameServer/Server/APlugins/Tools/Exporter/ConfigTable/Excel/Server/WorldConfig.xlsx differ
diff --git a/GameServer/Server/APlugins/Tools/Exporter/ConfigTable/Excel/Version.txt b/GameServer/Server/APlugins/Tools/Exporter/ConfigTable/Excel/Version.txt
new file mode 100644
index 00000000..1877ad88
--- /dev/null
+++ b/GameServer/Server/APlugins/Tools/Exporter/ConfigTable/Excel/Version.txt
@@ -0,0 +1 @@
+{"WorksheetNames":["MachineConfig","ProcessConfig","WorldConfig","SceneConfig","SceneTypeConfig"],"Tables":{"MachineConfig":1725984682557,"SceneConfig":1726083372000,"WorldConfig":1724007858627,"ProcessConfig":1725195494442}}
\ No newline at end of file
diff --git a/GameServer/Server/APlugins/Tools/Exporter/ConfigTable/ExporterSettings.json b/GameServer/Server/APlugins/Tools/Exporter/ConfigTable/ExporterSettings.json
new file mode 100644
index 00000000..7499bd6d
--- /dev/null
+++ b/GameServer/Server/APlugins/Tools/Exporter/ConfigTable/ExporterSettings.json
@@ -0,0 +1,44 @@
+{
+ "Export": {
+ "ExcelProgramPath": {
+ "Value": "../../../Examples/Config/Excel/",
+ "Comment": "Excel文件夹的根目录"
+ },
+ "ExcelVersionFile": {
+ "Value": "../../../Examples/Config/Excel/Version.txt",
+ "Comment": "Excel的Version文件位置、这个文件用于记录每次导出对比是否需要再次导出的文件"
+ },
+ "ExcelServerFileDirectory": {
+ "Value": "../../../Examples/Server/Entity/Generate/ConfigTable/Entity/",
+ "Comment": "Excel生成的代码文件、在服务端文件夹位置"
+ },
+ "ExcelClientFileDirectory": {
+ "Value": "../../../Examples/Client/Unity/Assets/Scripts/Hotfix/Generate/ConfigTable/Entity/",
+ "Comment": "Excel生成的代码文件、在客户端文件夹位置"
+ },
+ "ExcelServerBinaryDirectory": {
+ "Value": "../../../Examples/Config/Binary/",
+ "Comment": "Excel生成服务器二进制数据文件夹位置"
+ },
+ "ExcelClientBinaryDirectory": {
+ "Value": "../../../Examples/Client/Unity/Assets/Bundles/Config/",
+ "Comment": "Excel生成在客户端的二进制数据文件夹位置"
+ },
+ "ExcelServerJsonDirectory": {
+ "Value": "../../../Examples/Config/Json/Server/",
+ "Comment": "Excel生成在服务端的Json数据文件夹位置"
+ },
+ "ExcelClientJsonDirectory": {
+ "Value": "../../../Examples/Config/Json/Client/",
+ "Comment": "Excel生成在客户端的Json数据文件夹位置"
+ },
+ "ServerCustomExportDirectory": {
+ "Value": "../../../Examples/Server/Entity/Generate/CustomExport/",
+ "Comment": "Excel在服务端生成自定义代码的文件夹位置"
+ },
+ "ClientCustomExportDirectory": {
+ "Value": "../../../Examples/Client/Unity/Assets/Scripts/Hotfix/Generate/CustomExport",
+ "Comment": "Excel在客户端端生成自定义代码的文件夹位置"
+ }
+ }
+}
\ No newline at end of file
diff --git a/GameServer/Server/APlugins/Tools/Exporter/ConfigTable/Fantasy.Tools.ConfigTable b/GameServer/Server/APlugins/Tools/Exporter/ConfigTable/Fantasy.Tools.ConfigTable
new file mode 100644
index 00000000..434496ef
Binary files /dev/null and b/GameServer/Server/APlugins/Tools/Exporter/ConfigTable/Fantasy.Tools.ConfigTable differ
diff --git a/GameServer/Server/APlugins/Tools/Exporter/ConfigTable/Fantasy.Tools.ConfigTable.deps.json b/GameServer/Server/APlugins/Tools/Exporter/ConfigTable/Fantasy.Tools.ConfigTable.deps.json
new file mode 100644
index 00000000..b2488491
--- /dev/null
+++ b/GameServer/Server/APlugins/Tools/Exporter/ConfigTable/Fantasy.Tools.ConfigTable.deps.json
@@ -0,0 +1,521 @@
+{
+ "runtimeTarget": {
+ "name": ".NETCoreApp,Version=v8.0",
+ "signature": ""
+ },
+ "compilationOptions": {},
+ "targets": {
+ ".NETCoreApp,Version=v8.0": {
+ "Fantasy.Tools.ConfigTable/1.0.0": {
+ "dependencies": {
+ "CommandLineParser": "2.9.1",
+ "EPPlus": "7.3.2",
+ "Microsoft.CodeAnalysis.CSharp": "4.11.0",
+ "Microsoft.Extensions.Configuration.Json": "8.0.0",
+ "Newtonsoft.Json": "13.0.3",
+ "protobuf-net": "3.2.30"
+ },
+ "runtime": {
+ "Fantasy.Tools.ConfigTable.dll": {}
+ }
+ },
+ "CommandLineParser/2.9.1": {
+ "runtime": {
+ "lib/netstandard2.0/CommandLine.dll": {
+ "assemblyVersion": "2.9.1.0",
+ "fileVersion": "2.9.1.0"
+ }
+ }
+ },
+ "EPPlus/7.3.2": {
+ "dependencies": {
+ "EPPlus.System.Drawing": "6.1.1",
+ "Microsoft.Extensions.Configuration.Json": "8.0.0",
+ "Microsoft.IO.RecyclableMemoryStream": "3.0.1",
+ "System.ComponentModel.Annotations": "5.0.0",
+ "System.Formats.Asn1": "8.0.1",
+ "System.Security.Cryptography.Pkcs": "8.0.0",
+ "System.Text.Encoding.CodePages": "8.0.0",
+ "System.Text.Json": "8.0.4"
+ },
+ "runtime": {
+ "lib/net8.0/EPPlus.dll": {
+ "assemblyVersion": "7.3.2.0",
+ "fileVersion": "7.3.2.0"
+ }
+ }
+ },
+ "EPPlus.Interfaces/6.1.1": {
+ "runtime": {
+ "lib/net7.0/EPPlus.Interfaces.dll": {
+ "assemblyVersion": "6.1.1.0",
+ "fileVersion": "6.1.1.0"
+ }
+ }
+ },
+ "EPPlus.System.Drawing/6.1.1": {
+ "dependencies": {
+ "EPPlus.Interfaces": "6.1.1",
+ "System.Drawing.Common": "7.0.0"
+ },
+ "runtime": {
+ "lib/net7.0/EPPlus.System.Drawing.dll": {
+ "assemblyVersion": "6.1.1.0",
+ "fileVersion": "6.1.1.0"
+ }
+ }
+ },
+ "Microsoft.CodeAnalysis.Analyzers/3.3.4": {},
+ "Microsoft.CodeAnalysis.Common/4.11.0": {
+ "dependencies": {
+ "Microsoft.CodeAnalysis.Analyzers": "3.3.4",
+ "System.Collections.Immutable": "8.0.0",
+ "System.Reflection.Metadata": "8.0.0"
+ },
+ "runtime": {
+ "lib/net8.0/Microsoft.CodeAnalysis.dll": {
+ "assemblyVersion": "4.11.0.0",
+ "fileVersion": "4.1100.24.37604"
+ }
+ }
+ },
+ "Microsoft.CodeAnalysis.CSharp/4.11.0": {
+ "dependencies": {
+ "Microsoft.CodeAnalysis.Analyzers": "3.3.4",
+ "Microsoft.CodeAnalysis.Common": "4.11.0",
+ "System.Collections.Immutable": "8.0.0",
+ "System.Reflection.Metadata": "8.0.0"
+ },
+ "runtime": {
+ "lib/net8.0/Microsoft.CodeAnalysis.CSharp.dll": {
+ "assemblyVersion": "4.11.0.0",
+ "fileVersion": "4.1100.24.37604"
+ }
+ }
+ },
+ "Microsoft.Extensions.Configuration/8.0.0": {
+ "dependencies": {
+ "Microsoft.Extensions.Configuration.Abstractions": "8.0.0",
+ "Microsoft.Extensions.Primitives": "8.0.0"
+ },
+ "runtime": {
+ "lib/net8.0/Microsoft.Extensions.Configuration.dll": {
+ "assemblyVersion": "8.0.0.0",
+ "fileVersion": "8.0.23.53103"
+ }
+ }
+ },
+ "Microsoft.Extensions.Configuration.Abstractions/8.0.0": {
+ "dependencies": {
+ "Microsoft.Extensions.Primitives": "8.0.0"
+ },
+ "runtime": {
+ "lib/net8.0/Microsoft.Extensions.Configuration.Abstractions.dll": {
+ "assemblyVersion": "8.0.0.0",
+ "fileVersion": "8.0.23.53103"
+ }
+ }
+ },
+ "Microsoft.Extensions.Configuration.FileExtensions/8.0.0": {
+ "dependencies": {
+ "Microsoft.Extensions.Configuration": "8.0.0",
+ "Microsoft.Extensions.Configuration.Abstractions": "8.0.0",
+ "Microsoft.Extensions.FileProviders.Abstractions": "8.0.0",
+ "Microsoft.Extensions.FileProviders.Physical": "8.0.0",
+ "Microsoft.Extensions.Primitives": "8.0.0"
+ },
+ "runtime": {
+ "lib/net8.0/Microsoft.Extensions.Configuration.FileExtensions.dll": {
+ "assemblyVersion": "8.0.0.0",
+ "fileVersion": "8.0.23.53103"
+ }
+ }
+ },
+ "Microsoft.Extensions.Configuration.Json/8.0.0": {
+ "dependencies": {
+ "Microsoft.Extensions.Configuration": "8.0.0",
+ "Microsoft.Extensions.Configuration.Abstractions": "8.0.0",
+ "Microsoft.Extensions.Configuration.FileExtensions": "8.0.0",
+ "Microsoft.Extensions.FileProviders.Abstractions": "8.0.0",
+ "System.Text.Json": "8.0.4"
+ },
+ "runtime": {
+ "lib/net8.0/Microsoft.Extensions.Configuration.Json.dll": {
+ "assemblyVersion": "8.0.0.0",
+ "fileVersion": "8.0.23.53103"
+ }
+ }
+ },
+ "Microsoft.Extensions.FileProviders.Abstractions/8.0.0": {
+ "dependencies": {
+ "Microsoft.Extensions.Primitives": "8.0.0"
+ },
+ "runtime": {
+ "lib/net8.0/Microsoft.Extensions.FileProviders.Abstractions.dll": {
+ "assemblyVersion": "8.0.0.0",
+ "fileVersion": "8.0.23.53103"
+ }
+ }
+ },
+ "Microsoft.Extensions.FileProviders.Physical/8.0.0": {
+ "dependencies": {
+ "Microsoft.Extensions.FileProviders.Abstractions": "8.0.0",
+ "Microsoft.Extensions.FileSystemGlobbing": "8.0.0",
+ "Microsoft.Extensions.Primitives": "8.0.0"
+ },
+ "runtime": {
+ "lib/net8.0/Microsoft.Extensions.FileProviders.Physical.dll": {
+ "assemblyVersion": "8.0.0.0",
+ "fileVersion": "8.0.23.53103"
+ }
+ }
+ },
+ "Microsoft.Extensions.FileSystemGlobbing/8.0.0": {
+ "runtime": {
+ "lib/net8.0/Microsoft.Extensions.FileSystemGlobbing.dll": {
+ "assemblyVersion": "8.0.0.0",
+ "fileVersion": "8.0.23.53103"
+ }
+ }
+ },
+ "Microsoft.Extensions.Primitives/8.0.0": {
+ "runtime": {
+ "lib/net8.0/Microsoft.Extensions.Primitives.dll": {
+ "assemblyVersion": "8.0.0.0",
+ "fileVersion": "8.0.23.53103"
+ }
+ }
+ },
+ "Microsoft.IO.RecyclableMemoryStream/3.0.1": {
+ "runtime": {
+ "lib/net6.0/Microsoft.IO.RecyclableMemoryStream.dll": {
+ "assemblyVersion": "3.0.1.0",
+ "fileVersion": "3.0.1.0"
+ }
+ }
+ },
+ "Microsoft.Win32.SystemEvents/7.0.0": {
+ "runtime": {
+ "lib/net7.0/Microsoft.Win32.SystemEvents.dll": {
+ "assemblyVersion": "7.0.0.0",
+ "fileVersion": "7.0.22.51805"
+ }
+ },
+ "runtimeTargets": {
+ "runtimes/win/lib/net7.0/Microsoft.Win32.SystemEvents.dll": {
+ "rid": "win",
+ "assetType": "runtime",
+ "assemblyVersion": "7.0.0.0",
+ "fileVersion": "7.0.22.51805"
+ }
+ }
+ },
+ "Newtonsoft.Json/13.0.3": {
+ "runtime": {
+ "lib/net6.0/Newtonsoft.Json.dll": {
+ "assemblyVersion": "13.0.0.0",
+ "fileVersion": "13.0.3.27908"
+ }
+ }
+ },
+ "protobuf-net/3.2.30": {
+ "dependencies": {
+ "protobuf-net.Core": "3.2.30"
+ },
+ "runtime": {
+ "lib/net6.0/protobuf-net.dll": {
+ "assemblyVersion": "3.0.0.0",
+ "fileVersion": "3.2.30.709"
+ }
+ }
+ },
+ "protobuf-net.Core/3.2.30": {
+ "dependencies": {
+ "System.Collections.Immutable": "8.0.0"
+ },
+ "runtime": {
+ "lib/net6.0/protobuf-net.Core.dll": {
+ "assemblyVersion": "3.0.0.0",
+ "fileVersion": "3.2.30.709"
+ }
+ }
+ },
+ "System.Collections.Immutable/8.0.0": {},
+ "System.ComponentModel.Annotations/5.0.0": {},
+ "System.Drawing.Common/7.0.0": {
+ "dependencies": {
+ "Microsoft.Win32.SystemEvents": "7.0.0"
+ },
+ "runtime": {
+ "lib/net7.0/System.Drawing.Common.dll": {
+ "assemblyVersion": "7.0.0.0",
+ "fileVersion": "7.0.22.51805"
+ }
+ },
+ "runtimeTargets": {
+ "runtimes/win/lib/net7.0/System.Drawing.Common.dll": {
+ "rid": "win",
+ "assetType": "runtime",
+ "assemblyVersion": "7.0.0.0",
+ "fileVersion": "7.0.22.51805"
+ }
+ }
+ },
+ "System.Formats.Asn1/8.0.1": {
+ "runtime": {
+ "lib/net8.0/System.Formats.Asn1.dll": {
+ "assemblyVersion": "8.0.0.0",
+ "fileVersion": "8.0.724.31311"
+ }
+ }
+ },
+ "System.Reflection.Metadata/8.0.0": {
+ "dependencies": {
+ "System.Collections.Immutable": "8.0.0"
+ }
+ },
+ "System.Security.Cryptography.Pkcs/8.0.0": {
+ "dependencies": {
+ "System.Formats.Asn1": "8.0.1"
+ },
+ "runtime": {
+ "lib/net8.0/System.Security.Cryptography.Pkcs.dll": {
+ "assemblyVersion": "8.0.0.0",
+ "fileVersion": "8.0.23.53103"
+ }
+ },
+ "runtimeTargets": {
+ "runtimes/win/lib/net8.0/System.Security.Cryptography.Pkcs.dll": {
+ "rid": "win",
+ "assetType": "runtime",
+ "assemblyVersion": "8.0.0.0",
+ "fileVersion": "8.0.23.53103"
+ }
+ }
+ },
+ "System.Text.Encoding.CodePages/8.0.0": {},
+ "System.Text.Encodings.Web/8.0.0": {},
+ "System.Text.Json/8.0.4": {
+ "dependencies": {
+ "System.Text.Encodings.Web": "8.0.0"
+ },
+ "runtime": {
+ "lib/net8.0/System.Text.Json.dll": {
+ "assemblyVersion": "8.0.0.0",
+ "fileVersion": "8.0.724.31311"
+ }
+ }
+ }
+ }
+ },
+ "libraries": {
+ "Fantasy.Tools.ConfigTable/1.0.0": {
+ "type": "project",
+ "serviceable": false,
+ "sha512": ""
+ },
+ "CommandLineParser/2.9.1": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-OE0sl1/sQ37bjVsPKKtwQlWDgqaxWgtme3xZz7JssWUzg5JpMIyHgCTY9MVMxOg48fJ1AgGT3tgdH5m/kQ5xhA==",
+ "path": "commandlineparser/2.9.1",
+ "hashPath": "commandlineparser.2.9.1.nupkg.sha512"
+ },
+ "EPPlus/7.3.2": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-9DShQD2VuDZ7QLHp+map1r2HdI1G325YGkvRG+qs4N2fgeMF1Uq0TONCEL5gKCWMNDVGO0ZELJTAIzwNyOZQug==",
+ "path": "epplus/7.3.2",
+ "hashPath": "epplus.7.3.2.nupkg.sha512"
+ },
+ "EPPlus.Interfaces/6.1.1": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-y7dkrOoE1ZR9Vgy1Jf2rEIaTf3SHlUjYt01NklP+F5Qh7S2ruPbzTcpYLRWMeXiG8XL8h2jqX4CyIkFt3NQGZw==",
+ "path": "epplus.interfaces/6.1.1",
+ "hashPath": "epplus.interfaces.6.1.1.nupkg.sha512"
+ },
+ "EPPlus.System.Drawing/6.1.1": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-lRF5gHYrmkHOOiLMI0t6q8zNYjUrzRgAM5BCXumv5xiqXko8fx3AWI+HCNZfhEqVFGOop+42KfR5GiUcCoyoMw==",
+ "path": "epplus.system.drawing/6.1.1",
+ "hashPath": "epplus.system.drawing.6.1.1.nupkg.sha512"
+ },
+ "Microsoft.CodeAnalysis.Analyzers/3.3.4": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-AxkxcPR+rheX0SmvpLVIGLhOUXAKG56a64kV9VQZ4y9gR9ZmPXnqZvHJnmwLSwzrEP6junUF11vuc+aqo5r68g==",
+ "path": "microsoft.codeanalysis.analyzers/3.3.4",
+ "hashPath": "microsoft.codeanalysis.analyzers.3.3.4.nupkg.sha512"
+ },
+ "Microsoft.CodeAnalysis.Common/4.11.0": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-djf8ujmqYImFgB04UGtcsEhHrzVqzHowS+EEl/Yunc5LdrYrZhGBWUTXoCF0NzYXJxtfuD+UVQarWpvrNc94Qg==",
+ "path": "microsoft.codeanalysis.common/4.11.0",
+ "hashPath": "microsoft.codeanalysis.common.4.11.0.nupkg.sha512"
+ },
+ "Microsoft.CodeAnalysis.CSharp/4.11.0": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-6XYi2EusI8JT4y2l/F3VVVS+ISoIX9nqHsZRaG6W5aFeJ5BEuBosHfT/ABb73FN0RZ1Z3cj2j7cL28SToJPXOw==",
+ "path": "microsoft.codeanalysis.csharp/4.11.0",
+ "hashPath": "microsoft.codeanalysis.csharp.4.11.0.nupkg.sha512"
+ },
+ "Microsoft.Extensions.Configuration/8.0.0": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-0J/9YNXTMWSZP2p2+nvl8p71zpSwokZXZuJW+VjdErkegAnFdO1XlqtA62SJtgVYHdKu3uPxJHcMR/r35HwFBA==",
+ "path": "microsoft.extensions.configuration/8.0.0",
+ "hashPath": "microsoft.extensions.configuration.8.0.0.nupkg.sha512"
+ },
+ "Microsoft.Extensions.Configuration.Abstractions/8.0.0": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-3lE/iLSutpgX1CC0NOW70FJoGARRHbyKmG7dc0klnUZ9Dd9hS6N/POPWhKhMLCEuNN5nXEY5agmlFtH562vqhQ==",
+ "path": "microsoft.extensions.configuration.abstractions/8.0.0",
+ "hashPath": "microsoft.extensions.configuration.abstractions.8.0.0.nupkg.sha512"
+ },
+ "Microsoft.Extensions.Configuration.FileExtensions/8.0.0": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-McP+Lz/EKwvtCv48z0YImw+L1gi1gy5rHhNaNIY2CrjloV+XY8gydT8DjMR6zWeL13AFK+DioVpppwAuO1Gi1w==",
+ "path": "microsoft.extensions.configuration.fileextensions/8.0.0",
+ "hashPath": "microsoft.extensions.configuration.fileextensions.8.0.0.nupkg.sha512"
+ },
+ "Microsoft.Extensions.Configuration.Json/8.0.0": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-C2wqUoh9OmRL1akaCcKSTmRU8z0kckfImG7zLNI8uyi47Lp+zd5LWAD17waPQEqCz3ioWOCrFUo+JJuoeZLOBw==",
+ "path": "microsoft.extensions.configuration.json/8.0.0",
+ "hashPath": "microsoft.extensions.configuration.json.8.0.0.nupkg.sha512"
+ },
+ "Microsoft.Extensions.FileProviders.Abstractions/8.0.0": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-ZbaMlhJlpisjuWbvXr4LdAst/1XxH3vZ6A0BsgTphZ2L4PGuxRLz7Jr/S7mkAAnOn78Vu0fKhEgNF5JO3zfjqQ==",
+ "path": "microsoft.extensions.fileproviders.abstractions/8.0.0",
+ "hashPath": "microsoft.extensions.fileproviders.abstractions.8.0.0.nupkg.sha512"
+ },
+ "Microsoft.Extensions.FileProviders.Physical/8.0.0": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-UboiXxpPUpwulHvIAVE36Knq0VSHaAmfrFkegLyBZeaADuKezJ/AIXYAW8F5GBlGk/VaibN2k/Zn1ca8YAfVdA==",
+ "path": "microsoft.extensions.fileproviders.physical/8.0.0",
+ "hashPath": "microsoft.extensions.fileproviders.physical.8.0.0.nupkg.sha512"
+ },
+ "Microsoft.Extensions.FileSystemGlobbing/8.0.0": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-OK+670i7esqlQrPjdIKRbsyMCe9g5kSLpRRQGSr4Q58AOYEe/hCnfLZprh7viNisSUUQZmMrbbuDaIrP+V1ebQ==",
+ "path": "microsoft.extensions.filesystemglobbing/8.0.0",
+ "hashPath": "microsoft.extensions.filesystemglobbing.8.0.0.nupkg.sha512"
+ },
+ "Microsoft.Extensions.Primitives/8.0.0": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-bXJEZrW9ny8vjMF1JV253WeLhpEVzFo1lyaZu1vQ4ZxWUlVvknZ/+ftFgVheLubb4eZPSwwxBeqS1JkCOjxd8g==",
+ "path": "microsoft.extensions.primitives/8.0.0",
+ "hashPath": "microsoft.extensions.primitives.8.0.0.nupkg.sha512"
+ },
+ "Microsoft.IO.RecyclableMemoryStream/3.0.1": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-s/s20YTVY9r9TPfTrN5g8zPF1YhwxyqO6PxUkrYTGI2B+OGPe9AdajWZrLhFqXIvqIW23fnUE4+ztrUWNU1+9g==",
+ "path": "microsoft.io.recyclablememorystream/3.0.1",
+ "hashPath": "microsoft.io.recyclablememorystream.3.0.1.nupkg.sha512"
+ },
+ "Microsoft.Win32.SystemEvents/7.0.0": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-2nXPrhdAyAzir0gLl8Yy8S5Mnm/uBSQQA7jEsILOS1MTyS7DbmV1NgViMtvV1sfCD1ebITpNwb1NIinKeJgUVQ==",
+ "path": "microsoft.win32.systemevents/7.0.0",
+ "hashPath": "microsoft.win32.systemevents.7.0.0.nupkg.sha512"
+ },
+ "Newtonsoft.Json/13.0.3": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-HrC5BXdl00IP9zeV+0Z848QWPAoCr9P3bDEZguI+gkLcBKAOxix/tLEAAHC+UvDNPv4a2d18lOReHMOagPa+zQ==",
+ "path": "newtonsoft.json/13.0.3",
+ "hashPath": "newtonsoft.json.13.0.3.nupkg.sha512"
+ },
+ "protobuf-net/3.2.30": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-C/UTlmxEJHAHpqm8xQK1UyJKaIynVCSNG4mVrbLgnZ7ccH28nN49O8iMJvKEodTgVbnimvy+3mIiAdW6mATwnw==",
+ "path": "protobuf-net/3.2.30",
+ "hashPath": "protobuf-net.3.2.30.nupkg.sha512"
+ },
+ "protobuf-net.Core/3.2.30": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-v2ZxxYrz+X212ukSx+uqkLuPu414bvmSAnTyf+PBUKR9ENJxO4P/csorA/27456MCp1JNoMssDj/f91RDiwBfQ==",
+ "path": "protobuf-net.core/3.2.30",
+ "hashPath": "protobuf-net.core.3.2.30.nupkg.sha512"
+ },
+ "System.Collections.Immutable/8.0.0": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-AurL6Y5BA1WotzlEvVaIDpqzpIPvYnnldxru8oXJU2yFxFUy3+pNXjXd1ymO+RA0rq0+590Q8gaz2l3Sr7fmqg==",
+ "path": "system.collections.immutable/8.0.0",
+ "hashPath": "system.collections.immutable.8.0.0.nupkg.sha512"
+ },
+ "System.ComponentModel.Annotations/5.0.0": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-dMkqfy2el8A8/I76n2Hi1oBFEbG1SfxD2l5nhwXV3XjlnOmwxJlQbYpJH4W51odnU9sARCSAgv7S3CyAFMkpYg==",
+ "path": "system.componentmodel.annotations/5.0.0",
+ "hashPath": "system.componentmodel.annotations.5.0.0.nupkg.sha512"
+ },
+ "System.Drawing.Common/7.0.0": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-KIX+oBU38pxkKPxvLcLfIkOV5Ien8ReN78wro7OF5/erwcmortzeFx+iBswlh2Vz6gVne0khocQudGwaO1Ey6A==",
+ "path": "system.drawing.common/7.0.0",
+ "hashPath": "system.drawing.common.7.0.0.nupkg.sha512"
+ },
+ "System.Formats.Asn1/8.0.1": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-XqKba7Mm/koKSjKMfW82olQdmfbI5yqeoLV/tidRp7fbh5rmHAQ5raDI/7SU0swTzv+jgqtUGkzmFxuUg0it1A==",
+ "path": "system.formats.asn1/8.0.1",
+ "hashPath": "system.formats.asn1.8.0.1.nupkg.sha512"
+ },
+ "System.Reflection.Metadata/8.0.0": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-ptvgrFh7PvWI8bcVqG5rsA/weWM09EnthFHR5SCnS6IN+P4mj6rE1lBDC4U8HL9/57htKAqy4KQ3bBj84cfYyQ==",
+ "path": "system.reflection.metadata/8.0.0",
+ "hashPath": "system.reflection.metadata.8.0.0.nupkg.sha512"
+ },
+ "System.Security.Cryptography.Pkcs/8.0.0": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-ULmp3xoOwNYjOYp4JZ2NK/6NdTgiN1GQXzVVN1njQ7LOZ0d0B9vyMnhyqbIi9Qw4JXj1JgCsitkTShboHRx7Eg==",
+ "path": "system.security.cryptography.pkcs/8.0.0",
+ "hashPath": "system.security.cryptography.pkcs.8.0.0.nupkg.sha512"
+ },
+ "System.Text.Encoding.CodePages/8.0.0": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-OZIsVplFGaVY90G2SbpgU7EnCoOO5pw1t4ic21dBF3/1omrJFpAGoNAVpPyMVOC90/hvgkGG3VFqR13YgZMQfg==",
+ "path": "system.text.encoding.codepages/8.0.0",
+ "hashPath": "system.text.encoding.codepages.8.0.0.nupkg.sha512"
+ },
+ "System.Text.Encodings.Web/8.0.0": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-yev/k9GHAEGx2Rg3/tU6MQh4HGBXJs70y7j1LaM1i/ER9po+6nnQ6RRqTJn1E7Xu0fbIFK80Nh5EoODxrbxwBQ==",
+ "path": "system.text.encodings.web/8.0.0",
+ "hashPath": "system.text.encodings.web.8.0.0.nupkg.sha512"
+ },
+ "System.Text.Json/8.0.4": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-bAkhgDJ88XTsqczoxEMliSrpijKZHhbJQldhAmObj/RbrN3sU5dcokuXmWJWsdQAhiMJ9bTayWsL1C9fbbCRhw==",
+ "path": "system.text.json/8.0.4",
+ "hashPath": "system.text.json.8.0.4.nupkg.sha512"
+ }
+ }
+}
\ No newline at end of file
diff --git a/GameServer/Server/APlugins/Tools/Exporter/ConfigTable/Fantasy.Tools.ConfigTable.dll b/GameServer/Server/APlugins/Tools/Exporter/ConfigTable/Fantasy.Tools.ConfigTable.dll
new file mode 100644
index 00000000..691c3ecb
Binary files /dev/null and b/GameServer/Server/APlugins/Tools/Exporter/ConfigTable/Fantasy.Tools.ConfigTable.dll differ
diff --git a/GameServer/Server/APlugins/Tools/Exporter/ConfigTable/Fantasy.Tools.ConfigTable.pdb b/GameServer/Server/APlugins/Tools/Exporter/ConfigTable/Fantasy.Tools.ConfigTable.pdb
new file mode 100644
index 00000000..e28ebf3c
Binary files /dev/null and b/GameServer/Server/APlugins/Tools/Exporter/ConfigTable/Fantasy.Tools.ConfigTable.pdb differ
diff --git a/GameServer/Server/APlugins/Tools/Exporter/ConfigTable/Fantasy.Tools.ConfigTable.runtimeconfig.json b/GameServer/Server/APlugins/Tools/Exporter/ConfigTable/Fantasy.Tools.ConfigTable.runtimeconfig.json
new file mode 100644
index 00000000..becfaeac
--- /dev/null
+++ b/GameServer/Server/APlugins/Tools/Exporter/ConfigTable/Fantasy.Tools.ConfigTable.runtimeconfig.json
@@ -0,0 +1,12 @@
+{
+ "runtimeOptions": {
+ "tfm": "net8.0",
+ "framework": {
+ "name": "Microsoft.NETCore.App",
+ "version": "8.0.0"
+ },
+ "configProperties": {
+ "System.Runtime.Serialization.EnableUnsafeBinaryFormatterSerialization": false
+ }
+ }
+}
\ No newline at end of file
diff --git a/GameServer/Server/APlugins/Tools/Exporter/ConfigTable/Json/Server/MachineConfigData.Json b/GameServer/Server/APlugins/Tools/Exporter/ConfigTable/Json/Server/MachineConfigData.Json
new file mode 100644
index 00000000..f56f98e9
--- /dev/null
+++ b/GameServer/Server/APlugins/Tools/Exporter/ConfigTable/Json/Server/MachineConfigData.Json
@@ -0,0 +1,3 @@
+{"List":[
+{"Id":1,"OuterIP":"127.0.0.1","OuterBindIP":"127.0.0.1","InnerBindIP":"127.0.0.1"}
+]}
diff --git a/GameServer/Server/APlugins/Tools/Exporter/ConfigTable/Json/Server/ProcessConfigData.Json b/GameServer/Server/APlugins/Tools/Exporter/ConfigTable/Json/Server/ProcessConfigData.Json
new file mode 100644
index 00000000..a05a13c8
--- /dev/null
+++ b/GameServer/Server/APlugins/Tools/Exporter/ConfigTable/Json/Server/ProcessConfigData.Json
@@ -0,0 +1,3 @@
+{"List":[
+{"Id":1,"MachineId":1,"StartupGroup":0}
+]}
diff --git a/GameServer/Server/APlugins/Tools/Exporter/ConfigTable/Json/Server/SceneConfigData.Json b/GameServer/Server/APlugins/Tools/Exporter/ConfigTable/Json/Server/SceneConfigData.Json
new file mode 100644
index 00000000..44996e72
--- /dev/null
+++ b/GameServer/Server/APlugins/Tools/Exporter/ConfigTable/Json/Server/SceneConfigData.Json
@@ -0,0 +1,6 @@
+{"List":[
+{"Id":1001,"ProcessConfigId":1,"WorldConfigId":1,"SceneRuntimeType":"MultiThread","SceneTypeString":"Addressable","NetworkProtocol":null,"OuterPort":0,"InnerPort":11001,"SceneType":2},
+{"Id":1002,"ProcessConfigId":1,"WorldConfigId":1,"SceneRuntimeType":"MultiThread","SceneTypeString":"Gate","NetworkProtocol":"KCP","OuterPort":20000,"InnerPort":11002,"SceneType":3},
+{"Id":1003,"ProcessConfigId":1,"WorldConfigId":1,"SceneRuntimeType":"MultiThread","SceneTypeString":"Map","NetworkProtocol":null,"OuterPort":0,"InnerPort":11003,"SceneType":4},
+{"Id":1004,"ProcessConfigId":1,"WorldConfigId":1,"SceneRuntimeType":"MultiThread","SceneTypeString":"Chat","NetworkProtocol":null,"OuterPort":0,"InnerPort":11004,"SceneType":8}
+]}
diff --git a/GameServer/Server/APlugins/Tools/Exporter/ConfigTable/Json/Server/WorldConfigData.Json b/GameServer/Server/APlugins/Tools/Exporter/ConfigTable/Json/Server/WorldConfigData.Json
new file mode 100644
index 00000000..60dd0908
--- /dev/null
+++ b/GameServer/Server/APlugins/Tools/Exporter/ConfigTable/Json/Server/WorldConfigData.Json
@@ -0,0 +1,3 @@
+{"List":[
+{"Id":1,"WorldName":"测试服","DbConnection":null,"DbName":"fantasy_main","DbType":"MongoDB"}
+]}
diff --git a/GameServer/Server/APlugins/Tools/Exporter/ConfigTable/Microsoft.CodeAnalysis.CSharp.dll b/GameServer/Server/APlugins/Tools/Exporter/ConfigTable/Microsoft.CodeAnalysis.CSharp.dll
new file mode 100644
index 00000000..c23db489
Binary files /dev/null and b/GameServer/Server/APlugins/Tools/Exporter/ConfigTable/Microsoft.CodeAnalysis.CSharp.dll differ
diff --git a/GameServer/Server/APlugins/Tools/Exporter/ConfigTable/Microsoft.CodeAnalysis.dll b/GameServer/Server/APlugins/Tools/Exporter/ConfigTable/Microsoft.CodeAnalysis.dll
new file mode 100644
index 00000000..de7eadd9
Binary files /dev/null and b/GameServer/Server/APlugins/Tools/Exporter/ConfigTable/Microsoft.CodeAnalysis.dll differ
diff --git a/GameServer/Server/APlugins/Tools/Exporter/ConfigTable/Microsoft.Extensions.Configuration.Abstractions.dll b/GameServer/Server/APlugins/Tools/Exporter/ConfigTable/Microsoft.Extensions.Configuration.Abstractions.dll
new file mode 100644
index 00000000..a5ab3136
Binary files /dev/null and b/GameServer/Server/APlugins/Tools/Exporter/ConfigTable/Microsoft.Extensions.Configuration.Abstractions.dll differ
diff --git a/GameServer/Server/APlugins/Tools/Exporter/ConfigTable/Microsoft.Extensions.Configuration.FileExtensions.dll b/GameServer/Server/APlugins/Tools/Exporter/ConfigTable/Microsoft.Extensions.Configuration.FileExtensions.dll
new file mode 100644
index 00000000..4efc1a59
Binary files /dev/null and b/GameServer/Server/APlugins/Tools/Exporter/ConfigTable/Microsoft.Extensions.Configuration.FileExtensions.dll differ
diff --git a/GameServer/Server/APlugins/Tools/Exporter/ConfigTable/Microsoft.Extensions.Configuration.Json.dll b/GameServer/Server/APlugins/Tools/Exporter/ConfigTable/Microsoft.Extensions.Configuration.Json.dll
new file mode 100644
index 00000000..296db6a8
Binary files /dev/null and b/GameServer/Server/APlugins/Tools/Exporter/ConfigTable/Microsoft.Extensions.Configuration.Json.dll differ
diff --git a/GameServer/Server/APlugins/Tools/Exporter/ConfigTable/Microsoft.Extensions.Configuration.dll b/GameServer/Server/APlugins/Tools/Exporter/ConfigTable/Microsoft.Extensions.Configuration.dll
new file mode 100644
index 00000000..d3e5c229
Binary files /dev/null and b/GameServer/Server/APlugins/Tools/Exporter/ConfigTable/Microsoft.Extensions.Configuration.dll differ
diff --git a/GameServer/Server/APlugins/Tools/Exporter/ConfigTable/Microsoft.Extensions.FileProviders.Abstractions.dll b/GameServer/Server/APlugins/Tools/Exporter/ConfigTable/Microsoft.Extensions.FileProviders.Abstractions.dll
new file mode 100644
index 00000000..f907206c
Binary files /dev/null and b/GameServer/Server/APlugins/Tools/Exporter/ConfigTable/Microsoft.Extensions.FileProviders.Abstractions.dll differ
diff --git a/GameServer/Server/APlugins/Tools/Exporter/ConfigTable/Microsoft.Extensions.FileProviders.Physical.dll b/GameServer/Server/APlugins/Tools/Exporter/ConfigTable/Microsoft.Extensions.FileProviders.Physical.dll
new file mode 100644
index 00000000..6fb7f477
Binary files /dev/null and b/GameServer/Server/APlugins/Tools/Exporter/ConfigTable/Microsoft.Extensions.FileProviders.Physical.dll differ
diff --git a/GameServer/Server/APlugins/Tools/Exporter/ConfigTable/Microsoft.Extensions.FileSystemGlobbing.dll b/GameServer/Server/APlugins/Tools/Exporter/ConfigTable/Microsoft.Extensions.FileSystemGlobbing.dll
new file mode 100644
index 00000000..e5907359
Binary files /dev/null and b/GameServer/Server/APlugins/Tools/Exporter/ConfigTable/Microsoft.Extensions.FileSystemGlobbing.dll differ
diff --git a/GameServer/Server/APlugins/Tools/Exporter/ConfigTable/Microsoft.Extensions.Primitives.dll b/GameServer/Server/APlugins/Tools/Exporter/ConfigTable/Microsoft.Extensions.Primitives.dll
new file mode 100644
index 00000000..c24f2a0b
Binary files /dev/null and b/GameServer/Server/APlugins/Tools/Exporter/ConfigTable/Microsoft.Extensions.Primitives.dll differ
diff --git a/GameServer/Server/APlugins/Tools/Exporter/ConfigTable/Microsoft.IO.RecyclableMemoryStream.dll b/GameServer/Server/APlugins/Tools/Exporter/ConfigTable/Microsoft.IO.RecyclableMemoryStream.dll
new file mode 100644
index 00000000..6e0ea409
Binary files /dev/null and b/GameServer/Server/APlugins/Tools/Exporter/ConfigTable/Microsoft.IO.RecyclableMemoryStream.dll differ
diff --git a/GameServer/Server/APlugins/Tools/Exporter/ConfigTable/Microsoft.Win32.SystemEvents.dll b/GameServer/Server/APlugins/Tools/Exporter/ConfigTable/Microsoft.Win32.SystemEvents.dll
new file mode 100644
index 00000000..d40a926e
Binary files /dev/null and b/GameServer/Server/APlugins/Tools/Exporter/ConfigTable/Microsoft.Win32.SystemEvents.dll differ
diff --git a/GameServer/Server/APlugins/Tools/Exporter/ConfigTable/NetworkProtocol/Inner/InnerMessage.proto b/GameServer/Server/APlugins/Tools/Exporter/ConfigTable/NetworkProtocol/Inner/InnerMessage.proto
new file mode 100644
index 00000000..a8b51b85
--- /dev/null
+++ b/GameServer/Server/APlugins/Tools/Exporter/ConfigTable/NetworkProtocol/Inner/InnerMessage.proto
@@ -0,0 +1,27 @@
+syntax = "proto3";
+package Sining.Message;
+message G2A_TestRequest // IRouteRequest,G2A_TestResponse
+{
+
+}
+message G2A_TestResponse // IRouteResponse
+{
+
+}
+message G2M_RequestAddressableId // IRouteRequest,M2G_ResponseAddressableId
+{
+
+}
+message M2G_ResponseAddressableId // IRouteResponse
+{
+ int64 AddressableId = 1; // Map服务器返回的AddressableId
+}
+/// 通知Chat服务器创建一个RouteId
+message G2Chat_CreateRouteRequest // IRouteRequest,Chat2G_CreateRouteResponse
+{
+ int64 GateRouteId = 1;
+}
+message Chat2G_CreateRouteResponse // IRouteResponse
+{
+ int64 ChatRouteId = 1;
+}
\ No newline at end of file
diff --git a/GameServer/Server/APlugins/Tools/Exporter/ConfigTable/NetworkProtocol/OpCode.Cache b/GameServer/Server/APlugins/Tools/Exporter/ConfigTable/NetworkProtocol/OpCode.Cache
new file mode 100644
index 00000000..9e26dfee
--- /dev/null
+++ b/GameServer/Server/APlugins/Tools/Exporter/ConfigTable/NetworkProtocol/OpCode.Cache
@@ -0,0 +1 @@
+{}
\ No newline at end of file
diff --git a/GameServer/Server/APlugins/Tools/Exporter/ConfigTable/NetworkProtocol/Outer/OuterMessage.proto b/GameServer/Server/APlugins/Tools/Exporter/ConfigTable/NetworkProtocol/Outer/OuterMessage.proto
new file mode 100644
index 00000000..b036a74e
--- /dev/null
+++ b/GameServer/Server/APlugins/Tools/Exporter/ConfigTable/NetworkProtocol/Outer/OuterMessage.proto
@@ -0,0 +1,64 @@
+syntax = "proto3";
+package Fantasy.Network.Message;
+// 协议分为:
+// ProtoBuf:可以在Outer和Inner文件里使用。
+// MemoryPack:可以在Outer和Inner文件里使用。
+// Bson:仅支持在Inner文件里使用。
+// 使用方式:
+// 在message协议上方添加// Protocol+空格+协议名字
+// 例如:// Protocol ProtoBuf 或 // Protocol MemoryPack
+message C2G_TestMessage // IMessage
+{
+ string Tag = 1;
+}
+message C2G_TestRequest // IRequest,G2C_TestResponse
+{
+ string Tag = 1;
+}
+message G2C_TestResponse // IResponse
+{
+ string Tag = 1;
+}
+message C2G_CreateAddressableRequest // IRequest,G2C_CreateAddressableResponse
+{
+
+}
+message G2C_CreateAddressableResponse // IResponse
+{
+
+}
+message C2M_TestMessage // IAddressableRouteMessage
+{
+ string Tag = 1;
+}
+message C2M_TestRequest // IAddressableRouteRequest,M2C_TestResponse
+{
+ string Tag = 1;
+}
+message M2C_TestResponse // IAddressableRouteResponse
+{
+ string Tag = 1;
+}
+/// 通知Gate服务器创建一个Chat的Route连接
+message C2G_CreateChatRouteRequest // IRequest,G2C_CreateChatRouteResponse
+{
+
+}
+message G2C_CreateChatRouteResponse // IResponse
+{
+
+}
+/// 发送一个Route消息给Chat
+message C2Chat_TestMessage // ICustomRouteMessage,ChatRoute
+{
+ string Tag = 1;
+}
+/// 发送一个RPCRoute消息给Chat
+message C2Chat_TestMessageRequest // ICustomRouteRequest,Chat2C_TestMessageResponse,ChatRoute
+{
+ string Tag = 1;
+}
+message Chat2C_TestMessageResponse // ICustomRouteResponse
+{
+ string Tag = 1;
+}
\ No newline at end of file
diff --git a/GameServer/Server/APlugins/Tools/Exporter/ConfigTable/NetworkProtocol/RouteType.Config b/GameServer/Server/APlugins/Tools/Exporter/ConfigTable/NetworkProtocol/RouteType.Config
new file mode 100644
index 00000000..66082cf9
--- /dev/null
+++ b/GameServer/Server/APlugins/Tools/Exporter/ConfigTable/NetworkProtocol/RouteType.Config
@@ -0,0 +1,3 @@
+// Route协议定义(需要定义1000以上、因为1000以内的框架预留)
+GateRoute = 1001 // Gate
+ChatRoute = 1002 // Chat
\ No newline at end of file
diff --git a/GameServer/Server/APlugins/Tools/Exporter/ConfigTable/Newtonsoft.Json.dll b/GameServer/Server/APlugins/Tools/Exporter/ConfigTable/Newtonsoft.Json.dll
new file mode 100644
index 00000000..d035c38b
Binary files /dev/null and b/GameServer/Server/APlugins/Tools/Exporter/ConfigTable/Newtonsoft.Json.dll differ
diff --git a/GameServer/Server/APlugins/Tools/Exporter/ConfigTable/README.md b/GameServer/Server/APlugins/Tools/Exporter/ConfigTable/README.md
new file mode 100644
index 00000000..697ec052
--- /dev/null
+++ b/GameServer/Server/APlugins/Tools/Exporter/ConfigTable/README.md
@@ -0,0 +1,16 @@
+# Fantasy-Net.Config
+在Config文件夹中,存放着Fantasy所需的各种配置文件。这些文件涵盖了多个方面。每个配置文件都有其特定的格式和功能,通过精心设计的这些配置文件,开发团队能够快速调整框架参数,以实现更好的游戏体验,从而提升Fantasy的整体质量。
+## Excel文件夹
+里面存放了Fantasy.Net所需的四个Excel配置文件。用户可以利用Fantasy-Net.Exporter工具,依据这四个Excel文件生成相应的JSON文件,以供框架使用。这一过程不仅简化了数据处理,还确保了不同组件之间的无缝对接,使得工作流程更加高效。请确保在导出之前,Excel文件的格式和内容符合要求,以避免产生错误。
+## Json文件夹
+在该目录中存放了Fantasy.Net所需的四个JSON配置文件。用户可以根据这四个文件的模板进行添加或修改配置,以满足具体需求。每个项目的功能说明在相应的Excel文件中有详细描述,方便用户理解和使用这些配置文件。我们建议用户仔细阅读Excel文件中的说明,以确保配置的正确性和有效性。
+## NetworkProtocol文件夹
+存放框架所需定义网络协议的模版和文件夹
+### Inner文件夹
+定义服务器之间的网络协议
+### Outer文件夹
+定义客户端和服务器之间的网络协议
+### RouteType.Config
+定义自定义Route协议的配置文件
+## 交流与讨论:
+__讨论QQ群 : Fantasy服务器开发交流群 569888673 __
\ No newline at end of file
diff --git a/GameServer/Server/APlugins/Tools/Exporter/ConfigTable/Run.bat b/GameServer/Server/APlugins/Tools/Exporter/ConfigTable/Run.bat
new file mode 100644
index 00000000..e166f0ec
--- /dev/null
+++ b/GameServer/Server/APlugins/Tools/Exporter/ConfigTable/Run.bat
@@ -0,0 +1,21 @@
+@echo off
+
+echo Please select an option:
+echo 1. Client
+echo 2. Server
+echo 3. All
+
+set /p choice=Please select an option:
+
+if "%choice%"=="1" (
+ echo Client
+ dotnet Fantasy.Tools.ConfigTable.dll --ExportPlatform 1
+) else if "%choice%"=="2" (
+ echo Server
+ dotnet Fantasy.Tools.ConfigTable.dll --ExportPlatform 2
+) else if "%choice%"=="3" (
+ echo All
+ dotnet Fantasy.Tools.ConfigTable.dll --ExportPlatform 3
+) else (
+ echo Invalid option
+)
diff --git a/GameServer/Server/APlugins/Tools/Exporter/ConfigTable/Run.sh b/GameServer/Server/APlugins/Tools/Exporter/ConfigTable/Run.sh
new file mode 100644
index 00000000..491d8d97
--- /dev/null
+++ b/GameServer/Server/APlugins/Tools/Exporter/ConfigTable/Run.sh
@@ -0,0 +1,23 @@
+#!/bin/bash
+
+echo "1. Client"
+echo "2. Server"
+echo "3. All"
+
+read -n 1 -p "Please select an option:" choice
+echo ""
+echo ""
+case $choice in
+ 1)
+ dotnet Fantasy.Tools.ConfigTable.dll --ExportPlatform 1
+ ;;
+ 2)
+ dotnet Fantasy.Tools.ConfigTable.dll --ExportPlatform 2
+ ;;
+ 3)
+ dotnet Fantasy.Tools.ConfigTable.dll --ExportPlatform 3
+ ;;
+ *)
+ echo "Invalid option"
+ ;;
+esac
diff --git a/GameServer/Server/APlugins/Tools/Exporter/ConfigTable/System.Drawing.Common.dll b/GameServer/Server/APlugins/Tools/Exporter/ConfigTable/System.Drawing.Common.dll
new file mode 100644
index 00000000..310d5e8b
Binary files /dev/null and b/GameServer/Server/APlugins/Tools/Exporter/ConfigTable/System.Drawing.Common.dll differ
diff --git a/GameServer/Server/APlugins/Tools/Exporter/ConfigTable/System.Formats.Asn1.dll b/GameServer/Server/APlugins/Tools/Exporter/ConfigTable/System.Formats.Asn1.dll
new file mode 100644
index 00000000..16cc849a
Binary files /dev/null and b/GameServer/Server/APlugins/Tools/Exporter/ConfigTable/System.Formats.Asn1.dll differ
diff --git a/GameServer/Server/APlugins/Tools/Exporter/ConfigTable/System.Security.Cryptography.Pkcs.dll b/GameServer/Server/APlugins/Tools/Exporter/ConfigTable/System.Security.Cryptography.Pkcs.dll
new file mode 100644
index 00000000..a76a14a8
Binary files /dev/null and b/GameServer/Server/APlugins/Tools/Exporter/ConfigTable/System.Security.Cryptography.Pkcs.dll differ
diff --git a/GameServer/Server/APlugins/Tools/Exporter/ConfigTable/System.Text.Json.dll b/GameServer/Server/APlugins/Tools/Exporter/ConfigTable/System.Text.Json.dll
new file mode 100644
index 00000000..0c6d4065
Binary files /dev/null and b/GameServer/Server/APlugins/Tools/Exporter/ConfigTable/System.Text.Json.dll differ
diff --git a/GameServer/Server/APlugins/Tools/Exporter/ConfigTable/protobuf-net.Core.dll b/GameServer/Server/APlugins/Tools/Exporter/ConfigTable/protobuf-net.Core.dll
new file mode 100644
index 00000000..845a8403
Binary files /dev/null and b/GameServer/Server/APlugins/Tools/Exporter/ConfigTable/protobuf-net.Core.dll differ
diff --git a/GameServer/Server/APlugins/Tools/Exporter/ConfigTable/protobuf-net.dll b/GameServer/Server/APlugins/Tools/Exporter/ConfigTable/protobuf-net.dll
new file mode 100644
index 00000000..e4b68393
Binary files /dev/null and b/GameServer/Server/APlugins/Tools/Exporter/ConfigTable/protobuf-net.dll differ
diff --git a/GameServer/Server/APlugins/bin/Debug/net9.0/APlugins.deps.json b/GameServer/Server/APlugins/bin/Debug/net9.0/APlugins.deps.json
new file mode 100644
index 00000000..2b6a56f6
--- /dev/null
+++ b/GameServer/Server/APlugins/bin/Debug/net9.0/APlugins.deps.json
@@ -0,0 +1,433 @@
+{
+ "runtimeTarget": {
+ "name": ".NETCoreApp,Version=v9.0",
+ "signature": ""
+ },
+ "compilationOptions": {},
+ "targets": {
+ ".NETCoreApp,Version=v9.0": {
+ "APlugins/1.0.0": {
+ "dependencies": {
+ "Fantasy-Net.Config": "2024.1.4",
+ "Fantasy-Net.ConfigTable": "2024.2.0",
+ "Fantasy-Net.Tools.ExporterConfigTable": "2024.2.0",
+ "Fantasy-Net.Tools.ExporterNetworkProtocol": "2024.2.24",
+ "Microsoft.IdentityModel.Tokens": "8.7.0"
+ },
+ "runtime": {
+ "APlugins.dll": {}
+ }
+ },
+ "CommandLineParser/2.9.1": {
+ "runtime": {
+ "lib/netstandard2.0/CommandLine.dll": {
+ "assemblyVersion": "2.9.1.0",
+ "fileVersion": "2.9.1.0"
+ }
+ }
+ },
+ "DnsClient/1.6.1": {
+ "dependencies": {
+ "Microsoft.Win32.Registry": "5.0.0"
+ },
+ "runtime": {
+ "lib/net5.0/DnsClient.dll": {
+ "assemblyVersion": "1.6.1.0",
+ "fileVersion": "1.6.1.0"
+ }
+ }
+ },
+ "Fantasy-Net/2024.2.22": {
+ "dependencies": {
+ "CommandLineParser": "2.9.1",
+ "MongoDB.Bson": "3.1.0",
+ "MongoDB.Driver": "3.1.0",
+ "Newtonsoft.Json": "13.0.3",
+ "protobuf-net": "3.2.45"
+ },
+ "runtime": {
+ "lib/net9.0/Fantasy-Net.dll": {
+ "assemblyVersion": "1.0.0.0",
+ "fileVersion": "1.0.0.0"
+ }
+ }
+ },
+ "Fantasy-Net.Config/2024.1.4": {
+ "runtime": {
+ "lib/net8.0/Fantasy-Net.Config.dll": {
+ "assemblyVersion": "1.0.0.0",
+ "fileVersion": "1.0.0.0"
+ }
+ }
+ },
+ "Fantasy-Net.ConfigTable/2024.2.0": {
+ "dependencies": {
+ "Fantasy-Net": "2024.2.22"
+ },
+ "runtime": {
+ "lib/net8.0/Fantasy-Net.ConfigTable.dll": {
+ "assemblyVersion": "1.0.0.0",
+ "fileVersion": "1.0.0.0"
+ }
+ }
+ },
+ "Fantasy-Net.Tools.ExporterConfigTable/2024.2.0": {
+ "runtime": {
+ "lib/net8.0/Fantasy.Tools.ExporterConfigTable.dll": {
+ "assemblyVersion": "1.0.0.0",
+ "fileVersion": "1.0.0.0"
+ }
+ }
+ },
+ "Fantasy-Net.Tools.ExporterNetworkProtocol/2024.2.24": {
+ "runtime": {
+ "lib/net8.0/Fantasy.Tools.ExporterNetworkProtocol.dll": {
+ "assemblyVersion": "1.0.0.0",
+ "fileVersion": "1.0.0.0"
+ }
+ }
+ },
+ "Microsoft.Extensions.DependencyInjection.Abstractions/8.0.2": {},
+ "Microsoft.Extensions.Logging.Abstractions/8.0.2": {
+ "dependencies": {
+ "Microsoft.Extensions.DependencyInjection.Abstractions": "8.0.2"
+ }
+ },
+ "Microsoft.IdentityModel.Abstractions/8.7.0": {
+ "runtime": {
+ "lib/net9.0/Microsoft.IdentityModel.Abstractions.dll": {
+ "assemblyVersion": "8.7.0.0",
+ "fileVersion": "8.7.0.60321"
+ }
+ }
+ },
+ "Microsoft.IdentityModel.Logging/8.7.0": {
+ "dependencies": {
+ "Microsoft.IdentityModel.Abstractions": "8.7.0"
+ },
+ "runtime": {
+ "lib/net9.0/Microsoft.IdentityModel.Logging.dll": {
+ "assemblyVersion": "8.7.0.0",
+ "fileVersion": "8.7.0.60321"
+ }
+ }
+ },
+ "Microsoft.IdentityModel.Tokens/8.7.0": {
+ "dependencies": {
+ "Microsoft.Extensions.Logging.Abstractions": "8.0.2",
+ "Microsoft.IdentityModel.Logging": "8.7.0"
+ },
+ "runtime": {
+ "lib/net9.0/Microsoft.IdentityModel.Tokens.dll": {
+ "assemblyVersion": "8.7.0.0",
+ "fileVersion": "8.7.0.60321"
+ }
+ }
+ },
+ "Microsoft.NETCore.Platforms/5.0.0": {},
+ "Microsoft.Win32.Registry/5.0.0": {
+ "dependencies": {
+ "System.Security.AccessControl": "5.0.0",
+ "System.Security.Principal.Windows": "5.0.0"
+ }
+ },
+ "MongoDB.Bson/3.1.0": {
+ "dependencies": {
+ "System.Memory": "4.5.5",
+ "System.Runtime.CompilerServices.Unsafe": "5.0.0"
+ },
+ "runtime": {
+ "lib/net6.0/MongoDB.Bson.dll": {
+ "assemblyVersion": "3.1.0.0",
+ "fileVersion": "3.1.0.0"
+ }
+ }
+ },
+ "MongoDB.Driver/3.1.0": {
+ "dependencies": {
+ "DnsClient": "1.6.1",
+ "Microsoft.Extensions.Logging.Abstractions": "8.0.2",
+ "MongoDB.Bson": "3.1.0",
+ "SharpCompress": "0.30.1",
+ "Snappier": "1.0.0",
+ "System.Buffers": "4.5.1",
+ "ZstdSharp.Port": "0.7.3"
+ },
+ "runtime": {
+ "lib/net6.0/MongoDB.Driver.dll": {
+ "assemblyVersion": "3.1.0.0",
+ "fileVersion": "3.1.0.0"
+ }
+ }
+ },
+ "Newtonsoft.Json/13.0.3": {
+ "runtime": {
+ "lib/net6.0/Newtonsoft.Json.dll": {
+ "assemblyVersion": "13.0.0.0",
+ "fileVersion": "13.0.3.27908"
+ }
+ }
+ },
+ "protobuf-net/3.2.45": {
+ "dependencies": {
+ "protobuf-net.Core": "3.2.45"
+ },
+ "runtime": {
+ "lib/net6.0/protobuf-net.dll": {
+ "assemblyVersion": "3.0.0.0",
+ "fileVersion": "3.2.45.36865"
+ }
+ }
+ },
+ "protobuf-net.Core/3.2.45": {
+ "dependencies": {
+ "System.Collections.Immutable": "7.0.0"
+ },
+ "runtime": {
+ "lib/net6.0/protobuf-net.Core.dll": {
+ "assemblyVersion": "3.0.0.0",
+ "fileVersion": "3.2.45.36865"
+ }
+ }
+ },
+ "SharpCompress/0.30.1": {
+ "runtime": {
+ "lib/net5.0/SharpCompress.dll": {
+ "assemblyVersion": "0.30.1.0",
+ "fileVersion": "0.30.1.0"
+ }
+ }
+ },
+ "Snappier/1.0.0": {
+ "runtime": {
+ "lib/net5.0/Snappier.dll": {
+ "assemblyVersion": "1.0.0.0",
+ "fileVersion": "1.0.0.0"
+ }
+ }
+ },
+ "System.Buffers/4.5.1": {},
+ "System.Collections.Immutable/7.0.0": {},
+ "System.Memory/4.5.5": {},
+ "System.Runtime.CompilerServices.Unsafe/5.0.0": {},
+ "System.Security.AccessControl/5.0.0": {
+ "dependencies": {
+ "Microsoft.NETCore.Platforms": "5.0.0",
+ "System.Security.Principal.Windows": "5.0.0"
+ }
+ },
+ "System.Security.Principal.Windows/5.0.0": {},
+ "ZstdSharp.Port/0.7.3": {
+ "runtime": {
+ "lib/net7.0/ZstdSharp.dll": {
+ "assemblyVersion": "0.7.3.0",
+ "fileVersion": "0.7.3.0"
+ }
+ }
+ }
+ }
+ },
+ "libraries": {
+ "APlugins/1.0.0": {
+ "type": "project",
+ "serviceable": false,
+ "sha512": ""
+ },
+ "CommandLineParser/2.9.1": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-OE0sl1/sQ37bjVsPKKtwQlWDgqaxWgtme3xZz7JssWUzg5JpMIyHgCTY9MVMxOg48fJ1AgGT3tgdH5m/kQ5xhA==",
+ "path": "commandlineparser/2.9.1",
+ "hashPath": "commandlineparser.2.9.1.nupkg.sha512"
+ },
+ "DnsClient/1.6.1": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-4H/f2uYJOZ+YObZjpY9ABrKZI+JNw3uizp6oMzTXwDw6F+2qIPhpRl/1t68O/6e98+vqNiYGu+lswmwdYUy3gg==",
+ "path": "dnsclient/1.6.1",
+ "hashPath": "dnsclient.1.6.1.nupkg.sha512"
+ },
+ "Fantasy-Net/2024.2.22": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-cT6B0YJ5JmbPHBLYgLeVgg2WbXYxxa1tudoIase88uMzAuqU9t7EQ7dFZGSWjP41c5JOQ/0f1q9lzGWTh/hskw==",
+ "path": "fantasy-net/2024.2.22",
+ "hashPath": "fantasy-net.2024.2.22.nupkg.sha512"
+ },
+ "Fantasy-Net.Config/2024.1.4": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-zStTIJq91mx3VjCcU7eAtrExAcv1Zg+dAd8UdDvpHu7kTY8ldDQMp8sCmez2s+vUTmNyH1hlOgEE3rJILAijfQ==",
+ "path": "fantasy-net.config/2024.1.4",
+ "hashPath": "fantasy-net.config.2024.1.4.nupkg.sha512"
+ },
+ "Fantasy-Net.ConfigTable/2024.2.0": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-TIpd7Cz5eTx5WlI0QPA/gLkTCNWW4DHFXG5ZXgLjkxgxC4AYpXzvktaU/merldPuccaebc7ld8oVxJ0fejKHEg==",
+ "path": "fantasy-net.configtable/2024.2.0",
+ "hashPath": "fantasy-net.configtable.2024.2.0.nupkg.sha512"
+ },
+ "Fantasy-Net.Tools.ExporterConfigTable/2024.2.0": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-jPL8qd+9WTsOAOhXVkAOHuwjoyFTGIg6Zr/zsSP+OB4G6sNklcHI0KDnMYWN0EW01fSycl/g1DyRyyDdwZ2iPQ==",
+ "path": "fantasy-net.tools.exporterconfigtable/2024.2.0",
+ "hashPath": "fantasy-net.tools.exporterconfigtable.2024.2.0.nupkg.sha512"
+ },
+ "Fantasy-Net.Tools.ExporterNetworkProtocol/2024.2.24": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-gKbHZBgiTuERq4LCgctChvpYJGVoUbGNHoXq9x7Yz7aUoU7/M6DjuGdZE7XnsyNioddz1Gh992900RUAPwSpjQ==",
+ "path": "fantasy-net.tools.exporternetworkprotocol/2024.2.24",
+ "hashPath": "fantasy-net.tools.exporternetworkprotocol.2024.2.24.nupkg.sha512"
+ },
+ "Microsoft.Extensions.DependencyInjection.Abstractions/8.0.2": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-3iE7UF7MQkCv1cxzCahz+Y/guQbTqieyxyaWKhrRO91itI9cOKO76OHeQDahqG4MmW5umr3CcCvGmK92lWNlbg==",
+ "path": "microsoft.extensions.dependencyinjection.abstractions/8.0.2",
+ "hashPath": "microsoft.extensions.dependencyinjection.abstractions.8.0.2.nupkg.sha512"
+ },
+ "Microsoft.Extensions.Logging.Abstractions/8.0.2": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-nroMDjS7hNBPtkZqVBbSiQaQjWRDxITI8Y7XnDs97rqG3EbzVTNLZQf7bIeUJcaHOV8bca47s1Uxq94+2oGdxA==",
+ "path": "microsoft.extensions.logging.abstractions/8.0.2",
+ "hashPath": "microsoft.extensions.logging.abstractions.8.0.2.nupkg.sha512"
+ },
+ "Microsoft.IdentityModel.Abstractions/8.7.0": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-OQd5aVepYvh5evOmBMeAYjMIpEcTf1ZCBZaU7Nh/RlhhdXefjFDJeP1L2F2zeNT1unFr+wUu/h3Ac2Xb4BXU6w==",
+ "path": "microsoft.identitymodel.abstractions/8.7.0",
+ "hashPath": "microsoft.identitymodel.abstractions.8.7.0.nupkg.sha512"
+ },
+ "Microsoft.IdentityModel.Logging/8.7.0": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-Bs0TznPAu+nxa9rAVHJ+j3CYECHJkT3tG8AyBfhFYlT5ldsDhoxFT7J+PKxJHLf+ayqWfvDZHHc4639W2FQCxA==",
+ "path": "microsoft.identitymodel.logging/8.7.0",
+ "hashPath": "microsoft.identitymodel.logging.8.7.0.nupkg.sha512"
+ },
+ "Microsoft.IdentityModel.Tokens/8.7.0": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-5Z6voXjRXAnGklhmZd1mKz89UhcF5ZQQZaZc2iKrOuL4Li1UihG2vlJx8IbiFAOIxy/xdbsAm0A+WZEaH5fxng==",
+ "path": "microsoft.identitymodel.tokens/8.7.0",
+ "hashPath": "microsoft.identitymodel.tokens.8.7.0.nupkg.sha512"
+ },
+ "Microsoft.NETCore.Platforms/5.0.0": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-VyPlqzH2wavqquTcYpkIIAQ6WdenuKoFN0BdYBbCWsclXacSOHNQn66Gt4z5NBqEYW0FAPm5rlvki9ZiCij5xQ==",
+ "path": "microsoft.netcore.platforms/5.0.0",
+ "hashPath": "microsoft.netcore.platforms.5.0.0.nupkg.sha512"
+ },
+ "Microsoft.Win32.Registry/5.0.0": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-dDoKi0PnDz31yAyETfRntsLArTlVAVzUzCIvvEDsDsucrl33Dl8pIJG06ePTJTI3tGpeyHS9Cq7Foc/s4EeKcg==",
+ "path": "microsoft.win32.registry/5.0.0",
+ "hashPath": "microsoft.win32.registry.5.0.0.nupkg.sha512"
+ },
+ "MongoDB.Bson/3.1.0": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-3dhaZhz18B5vUoEP13o2j8A6zQfkHdZhwBvLZEjDJum4BTLLv1/Z8bt25UQEtpqvYwLgde4R6ekWZ7XAYUMxuw==",
+ "path": "mongodb.bson/3.1.0",
+ "hashPath": "mongodb.bson.3.1.0.nupkg.sha512"
+ },
+ "MongoDB.Driver/3.1.0": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-+O7lKaIl7VUHptE0hqTd7UY1G5KDp/o8S4upG7YL4uChMNKD/U6tz9i17nMGHaD/L2AiPLgaJcaDe2XACsegGA==",
+ "path": "mongodb.driver/3.1.0",
+ "hashPath": "mongodb.driver.3.1.0.nupkg.sha512"
+ },
+ "Newtonsoft.Json/13.0.3": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-HrC5BXdl00IP9zeV+0Z848QWPAoCr9P3bDEZguI+gkLcBKAOxix/tLEAAHC+UvDNPv4a2d18lOReHMOagPa+zQ==",
+ "path": "newtonsoft.json/13.0.3",
+ "hashPath": "newtonsoft.json.13.0.3.nupkg.sha512"
+ },
+ "protobuf-net/3.2.45": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-5UZ/ukUHcGbFSl7vNMrHsfjqdxusdd9w7w0fCEXzf3UUtsrGNVCzV5SmF+sCHAbnRV2qPcD1ixiDP7Aj8lX/HA==",
+ "path": "protobuf-net/3.2.45",
+ "hashPath": "protobuf-net.3.2.45.nupkg.sha512"
+ },
+ "protobuf-net.Core/3.2.45": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-PMWatW2NrT1uTXD7etJ4VdQ0wWZLFrIfdRGppD2QX7nzZ0+kIzqhq551u6ZiXJHWJgG4hWFEkSnUnt2aB6posg==",
+ "path": "protobuf-net.core/3.2.45",
+ "hashPath": "protobuf-net.core.3.2.45.nupkg.sha512"
+ },
+ "SharpCompress/0.30.1": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-XqD4TpfyYGa7QTPzaGlMVbcecKnXy4YmYLDWrU+JIj7IuRNl7DH2END+Ll7ekWIY8o3dAMWLFDE1xdhfIWD1nw==",
+ "path": "sharpcompress/0.30.1",
+ "hashPath": "sharpcompress.0.30.1.nupkg.sha512"
+ },
+ "Snappier/1.0.0": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-rFtK2KEI9hIe8gtx3a0YDXdHOpedIf9wYCEYtBEmtlyiWVX3XlCNV03JrmmAi/Cdfn7dxK+k0sjjcLv4fpHnqA==",
+ "path": "snappier/1.0.0",
+ "hashPath": "snappier.1.0.0.nupkg.sha512"
+ },
+ "System.Buffers/4.5.1": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-Rw7ijyl1qqRS0YQD/WycNst8hUUMgrMH4FCn1nNm27M4VxchZ1js3fVjQaANHO5f3sN4isvP4a+Met9Y4YomAg==",
+ "path": "system.buffers/4.5.1",
+ "hashPath": "system.buffers.4.5.1.nupkg.sha512"
+ },
+ "System.Collections.Immutable/7.0.0": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-dQPcs0U1IKnBdRDBkrCTi1FoajSTBzLcVTpjO4MBCMC7f4pDOIPzgBoX8JjG7X6uZRJ8EBxsi8+DR1JuwjnzOQ==",
+ "path": "system.collections.immutable/7.0.0",
+ "hashPath": "system.collections.immutable.7.0.0.nupkg.sha512"
+ },
+ "System.Memory/4.5.5": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-XIWiDvKPXaTveaB7HVganDlOCRoj03l+jrwNvcge/t8vhGYKvqV+dMv6G4SAX2NoNmN0wZfVPTAlFwZcZvVOUw==",
+ "path": "system.memory/4.5.5",
+ "hashPath": "system.memory.4.5.5.nupkg.sha512"
+ },
+ "System.Runtime.CompilerServices.Unsafe/5.0.0": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-ZD9TMpsmYJLrxbbmdvhwt9YEgG5WntEnZ/d1eH8JBX9LBp+Ju8BSBhUGbZMNVHHomWo2KVImJhTDl2hIgw/6MA==",
+ "path": "system.runtime.compilerservices.unsafe/5.0.0",
+ "hashPath": "system.runtime.compilerservices.unsafe.5.0.0.nupkg.sha512"
+ },
+ "System.Security.AccessControl/5.0.0": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-dagJ1mHZO3Ani8GH0PHpPEe/oYO+rVdbQjvjJkBRNQkX4t0r1iaeGn8+/ybkSLEan3/slM0t59SVdHzuHf2jmw==",
+ "path": "system.security.accesscontrol/5.0.0",
+ "hashPath": "system.security.accesscontrol.5.0.0.nupkg.sha512"
+ },
+ "System.Security.Principal.Windows/5.0.0": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-t0MGLukB5WAVU9bO3MGzvlGnyJPgUlcwerXn1kzBRjwLKixT96XV0Uza41W49gVd8zEMFu9vQEFlv0IOrytICA==",
+ "path": "system.security.principal.windows/5.0.0",
+ "hashPath": "system.security.principal.windows.5.0.0.nupkg.sha512"
+ },
+ "ZstdSharp.Port/0.7.3": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-U9Ix4l4cl58Kzz1rJzj5hoVTjmbx1qGMwzAcbv1j/d3NzrFaESIurQyg+ow4mivCgkE3S413y+U9k4WdnEIkRA==",
+ "path": "zstdsharp.port/0.7.3",
+ "hashPath": "zstdsharp.port.0.7.3.nupkg.sha512"
+ }
+ }
+}
\ No newline at end of file
diff --git a/GameServer/Server/APlugins/bin/Debug/net9.0/APlugins.dll b/GameServer/Server/APlugins/bin/Debug/net9.0/APlugins.dll
new file mode 100644
index 00000000..ed581911
Binary files /dev/null and b/GameServer/Server/APlugins/bin/Debug/net9.0/APlugins.dll differ
diff --git a/GameServer/Server/APlugins/bin/Debug/net9.0/APlugins.pdb b/GameServer/Server/APlugins/bin/Debug/net9.0/APlugins.pdb
new file mode 100644
index 00000000..7e866004
Binary files /dev/null and b/GameServer/Server/APlugins/bin/Debug/net9.0/APlugins.pdb differ
diff --git a/GameServer/Server/APlugins/bin/Release/net9.0/APlugins.deps.json b/GameServer/Server/APlugins/bin/Release/net9.0/APlugins.deps.json
new file mode 100644
index 00000000..49f85d0f
--- /dev/null
+++ b/GameServer/Server/APlugins/bin/Release/net9.0/APlugins.deps.json
@@ -0,0 +1,433 @@
+{
+ "runtimeTarget": {
+ "name": ".NETCoreApp,Version=v9.0",
+ "signature": ""
+ },
+ "compilationOptions": {},
+ "targets": {
+ ".NETCoreApp,Version=v9.0": {
+ "APlugins/1.0.0": {
+ "dependencies": {
+ "Fantasy-Net.Config": "2024.1.4",
+ "Fantasy-Net.ConfigTable": "2024.2.0",
+ "Fantasy-Net.Tools.ExporterConfigTable": "2024.2.0",
+ "Fantasy-Net.Tools.ExporterNetworkProtocol": "2024.2.24",
+ "Microsoft.IdentityModel.Tokens": "8.6.1"
+ },
+ "runtime": {
+ "APlugins.dll": {}
+ }
+ },
+ "CommandLineParser/2.9.1": {
+ "runtime": {
+ "lib/netstandard2.0/CommandLine.dll": {
+ "assemblyVersion": "2.9.1.0",
+ "fileVersion": "2.9.1.0"
+ }
+ }
+ },
+ "DnsClient/1.6.1": {
+ "dependencies": {
+ "Microsoft.Win32.Registry": "5.0.0"
+ },
+ "runtime": {
+ "lib/net5.0/DnsClient.dll": {
+ "assemblyVersion": "1.6.1.0",
+ "fileVersion": "1.6.1.0"
+ }
+ }
+ },
+ "Fantasy-Net/2024.2.22": {
+ "dependencies": {
+ "CommandLineParser": "2.9.1",
+ "MongoDB.Bson": "3.1.0",
+ "MongoDB.Driver": "3.1.0",
+ "Newtonsoft.Json": "13.0.3",
+ "protobuf-net": "3.2.45"
+ },
+ "runtime": {
+ "lib/net9.0/Fantasy-Net.dll": {
+ "assemblyVersion": "1.0.0.0",
+ "fileVersion": "1.0.0.0"
+ }
+ }
+ },
+ "Fantasy-Net.Config/2024.1.4": {
+ "runtime": {
+ "lib/net8.0/Fantasy-Net.Config.dll": {
+ "assemblyVersion": "1.0.0.0",
+ "fileVersion": "1.0.0.0"
+ }
+ }
+ },
+ "Fantasy-Net.ConfigTable/2024.2.0": {
+ "dependencies": {
+ "Fantasy-Net": "2024.2.22"
+ },
+ "runtime": {
+ "lib/net8.0/Fantasy-Net.ConfigTable.dll": {
+ "assemblyVersion": "1.0.0.0",
+ "fileVersion": "1.0.0.0"
+ }
+ }
+ },
+ "Fantasy-Net.Tools.ExporterConfigTable/2024.2.0": {
+ "runtime": {
+ "lib/net8.0/Fantasy.Tools.ExporterConfigTable.dll": {
+ "assemblyVersion": "1.0.0.0",
+ "fileVersion": "1.0.0.0"
+ }
+ }
+ },
+ "Fantasy-Net.Tools.ExporterNetworkProtocol/2024.2.24": {
+ "runtime": {
+ "lib/net8.0/Fantasy.Tools.ExporterNetworkProtocol.dll": {
+ "assemblyVersion": "1.0.0.0",
+ "fileVersion": "1.0.0.0"
+ }
+ }
+ },
+ "Microsoft.Extensions.DependencyInjection.Abstractions/8.0.2": {},
+ "Microsoft.Extensions.Logging.Abstractions/8.0.2": {
+ "dependencies": {
+ "Microsoft.Extensions.DependencyInjection.Abstractions": "8.0.2"
+ }
+ },
+ "Microsoft.IdentityModel.Abstractions/8.6.1": {
+ "runtime": {
+ "lib/net9.0/Microsoft.IdentityModel.Abstractions.dll": {
+ "assemblyVersion": "8.6.1.0",
+ "fileVersion": "8.6.1.60307"
+ }
+ }
+ },
+ "Microsoft.IdentityModel.Logging/8.6.1": {
+ "dependencies": {
+ "Microsoft.IdentityModel.Abstractions": "8.6.1"
+ },
+ "runtime": {
+ "lib/net9.0/Microsoft.IdentityModel.Logging.dll": {
+ "assemblyVersion": "8.6.1.0",
+ "fileVersion": "8.6.1.60307"
+ }
+ }
+ },
+ "Microsoft.IdentityModel.Tokens/8.6.1": {
+ "dependencies": {
+ "Microsoft.Extensions.Logging.Abstractions": "8.0.2",
+ "Microsoft.IdentityModel.Logging": "8.6.1"
+ },
+ "runtime": {
+ "lib/net9.0/Microsoft.IdentityModel.Tokens.dll": {
+ "assemblyVersion": "8.6.1.0",
+ "fileVersion": "8.6.1.60307"
+ }
+ }
+ },
+ "Microsoft.NETCore.Platforms/5.0.0": {},
+ "Microsoft.Win32.Registry/5.0.0": {
+ "dependencies": {
+ "System.Security.AccessControl": "5.0.0",
+ "System.Security.Principal.Windows": "5.0.0"
+ }
+ },
+ "MongoDB.Bson/3.1.0": {
+ "dependencies": {
+ "System.Memory": "4.5.5",
+ "System.Runtime.CompilerServices.Unsafe": "5.0.0"
+ },
+ "runtime": {
+ "lib/net6.0/MongoDB.Bson.dll": {
+ "assemblyVersion": "3.1.0.0",
+ "fileVersion": "3.1.0.0"
+ }
+ }
+ },
+ "MongoDB.Driver/3.1.0": {
+ "dependencies": {
+ "DnsClient": "1.6.1",
+ "Microsoft.Extensions.Logging.Abstractions": "8.0.2",
+ "MongoDB.Bson": "3.1.0",
+ "SharpCompress": "0.30.1",
+ "Snappier": "1.0.0",
+ "System.Buffers": "4.5.1",
+ "ZstdSharp.Port": "0.7.3"
+ },
+ "runtime": {
+ "lib/net6.0/MongoDB.Driver.dll": {
+ "assemblyVersion": "3.1.0.0",
+ "fileVersion": "3.1.0.0"
+ }
+ }
+ },
+ "Newtonsoft.Json/13.0.3": {
+ "runtime": {
+ "lib/net6.0/Newtonsoft.Json.dll": {
+ "assemblyVersion": "13.0.0.0",
+ "fileVersion": "13.0.3.27908"
+ }
+ }
+ },
+ "protobuf-net/3.2.45": {
+ "dependencies": {
+ "protobuf-net.Core": "3.2.45"
+ },
+ "runtime": {
+ "lib/net6.0/protobuf-net.dll": {
+ "assemblyVersion": "3.0.0.0",
+ "fileVersion": "3.2.45.36865"
+ }
+ }
+ },
+ "protobuf-net.Core/3.2.45": {
+ "dependencies": {
+ "System.Collections.Immutable": "7.0.0"
+ },
+ "runtime": {
+ "lib/net6.0/protobuf-net.Core.dll": {
+ "assemblyVersion": "3.0.0.0",
+ "fileVersion": "3.2.45.36865"
+ }
+ }
+ },
+ "SharpCompress/0.30.1": {
+ "runtime": {
+ "lib/net5.0/SharpCompress.dll": {
+ "assemblyVersion": "0.30.1.0",
+ "fileVersion": "0.30.1.0"
+ }
+ }
+ },
+ "Snappier/1.0.0": {
+ "runtime": {
+ "lib/net5.0/Snappier.dll": {
+ "assemblyVersion": "1.0.0.0",
+ "fileVersion": "1.0.0.0"
+ }
+ }
+ },
+ "System.Buffers/4.5.1": {},
+ "System.Collections.Immutable/7.0.0": {},
+ "System.Memory/4.5.5": {},
+ "System.Runtime.CompilerServices.Unsafe/5.0.0": {},
+ "System.Security.AccessControl/5.0.0": {
+ "dependencies": {
+ "Microsoft.NETCore.Platforms": "5.0.0",
+ "System.Security.Principal.Windows": "5.0.0"
+ }
+ },
+ "System.Security.Principal.Windows/5.0.0": {},
+ "ZstdSharp.Port/0.7.3": {
+ "runtime": {
+ "lib/net7.0/ZstdSharp.dll": {
+ "assemblyVersion": "0.7.3.0",
+ "fileVersion": "0.7.3.0"
+ }
+ }
+ }
+ }
+ },
+ "libraries": {
+ "APlugins/1.0.0": {
+ "type": "project",
+ "serviceable": false,
+ "sha512": ""
+ },
+ "CommandLineParser/2.9.1": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-OE0sl1/sQ37bjVsPKKtwQlWDgqaxWgtme3xZz7JssWUzg5JpMIyHgCTY9MVMxOg48fJ1AgGT3tgdH5m/kQ5xhA==",
+ "path": "commandlineparser/2.9.1",
+ "hashPath": "commandlineparser.2.9.1.nupkg.sha512"
+ },
+ "DnsClient/1.6.1": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-4H/f2uYJOZ+YObZjpY9ABrKZI+JNw3uizp6oMzTXwDw6F+2qIPhpRl/1t68O/6e98+vqNiYGu+lswmwdYUy3gg==",
+ "path": "dnsclient/1.6.1",
+ "hashPath": "dnsclient.1.6.1.nupkg.sha512"
+ },
+ "Fantasy-Net/2024.2.22": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-cT6B0YJ5JmbPHBLYgLeVgg2WbXYxxa1tudoIase88uMzAuqU9t7EQ7dFZGSWjP41c5JOQ/0f1q9lzGWTh/hskw==",
+ "path": "fantasy-net/2024.2.22",
+ "hashPath": "fantasy-net.2024.2.22.nupkg.sha512"
+ },
+ "Fantasy-Net.Config/2024.1.4": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-zStTIJq91mx3VjCcU7eAtrExAcv1Zg+dAd8UdDvpHu7kTY8ldDQMp8sCmez2s+vUTmNyH1hlOgEE3rJILAijfQ==",
+ "path": "fantasy-net.config/2024.1.4",
+ "hashPath": "fantasy-net.config.2024.1.4.nupkg.sha512"
+ },
+ "Fantasy-Net.ConfigTable/2024.2.0": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-TIpd7Cz5eTx5WlI0QPA/gLkTCNWW4DHFXG5ZXgLjkxgxC4AYpXzvktaU/merldPuccaebc7ld8oVxJ0fejKHEg==",
+ "path": "fantasy-net.configtable/2024.2.0",
+ "hashPath": "fantasy-net.configtable.2024.2.0.nupkg.sha512"
+ },
+ "Fantasy-Net.Tools.ExporterConfigTable/2024.2.0": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-jPL8qd+9WTsOAOhXVkAOHuwjoyFTGIg6Zr/zsSP+OB4G6sNklcHI0KDnMYWN0EW01fSycl/g1DyRyyDdwZ2iPQ==",
+ "path": "fantasy-net.tools.exporterconfigtable/2024.2.0",
+ "hashPath": "fantasy-net.tools.exporterconfigtable.2024.2.0.nupkg.sha512"
+ },
+ "Fantasy-Net.Tools.ExporterNetworkProtocol/2024.2.24": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-gKbHZBgiTuERq4LCgctChvpYJGVoUbGNHoXq9x7Yz7aUoU7/M6DjuGdZE7XnsyNioddz1Gh992900RUAPwSpjQ==",
+ "path": "fantasy-net.tools.exporternetworkprotocol/2024.2.24",
+ "hashPath": "fantasy-net.tools.exporternetworkprotocol.2024.2.24.nupkg.sha512"
+ },
+ "Microsoft.Extensions.DependencyInjection.Abstractions/8.0.2": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-3iE7UF7MQkCv1cxzCahz+Y/guQbTqieyxyaWKhrRO91itI9cOKO76OHeQDahqG4MmW5umr3CcCvGmK92lWNlbg==",
+ "path": "microsoft.extensions.dependencyinjection.abstractions/8.0.2",
+ "hashPath": "microsoft.extensions.dependencyinjection.abstractions.8.0.2.nupkg.sha512"
+ },
+ "Microsoft.Extensions.Logging.Abstractions/8.0.2": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-nroMDjS7hNBPtkZqVBbSiQaQjWRDxITI8Y7XnDs97rqG3EbzVTNLZQf7bIeUJcaHOV8bca47s1Uxq94+2oGdxA==",
+ "path": "microsoft.extensions.logging.abstractions/8.0.2",
+ "hashPath": "microsoft.extensions.logging.abstractions.8.0.2.nupkg.sha512"
+ },
+ "Microsoft.IdentityModel.Abstractions/8.6.1": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-OwmvCXYTttrxV3qT7QKDkoQP4/DB4RWjTwEqV+dNfb2opHn29WGDzoF+r4BVFQVy+BDYMhRlhIp8g3jSyJd+4Q==",
+ "path": "microsoft.identitymodel.abstractions/8.6.1",
+ "hashPath": "microsoft.identitymodel.abstractions.8.6.1.nupkg.sha512"
+ },
+ "Microsoft.IdentityModel.Logging/8.6.1": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-BdWlVgJYdmcR9TMUOhaZ3vJyaRO7zr7xgK+cRT4R2q59Xl7JMmTB4ctb/VOsyDhxXb497jDNNvLwldp+2ZVBEg==",
+ "path": "microsoft.identitymodel.logging/8.6.1",
+ "hashPath": "microsoft.identitymodel.logging.8.6.1.nupkg.sha512"
+ },
+ "Microsoft.IdentityModel.Tokens/8.6.1": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-FvED2com8LIFl9yFXneiX0uxNf9fuf8jKDFcvxC93qXOAfFa8fdLkCiur1vWF+PvgQHhsHVBe6CtDZHzsN8nCQ==",
+ "path": "microsoft.identitymodel.tokens/8.6.1",
+ "hashPath": "microsoft.identitymodel.tokens.8.6.1.nupkg.sha512"
+ },
+ "Microsoft.NETCore.Platforms/5.0.0": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-VyPlqzH2wavqquTcYpkIIAQ6WdenuKoFN0BdYBbCWsclXacSOHNQn66Gt4z5NBqEYW0FAPm5rlvki9ZiCij5xQ==",
+ "path": "microsoft.netcore.platforms/5.0.0",
+ "hashPath": "microsoft.netcore.platforms.5.0.0.nupkg.sha512"
+ },
+ "Microsoft.Win32.Registry/5.0.0": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-dDoKi0PnDz31yAyETfRntsLArTlVAVzUzCIvvEDsDsucrl33Dl8pIJG06ePTJTI3tGpeyHS9Cq7Foc/s4EeKcg==",
+ "path": "microsoft.win32.registry/5.0.0",
+ "hashPath": "microsoft.win32.registry.5.0.0.nupkg.sha512"
+ },
+ "MongoDB.Bson/3.1.0": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-3dhaZhz18B5vUoEP13o2j8A6zQfkHdZhwBvLZEjDJum4BTLLv1/Z8bt25UQEtpqvYwLgde4R6ekWZ7XAYUMxuw==",
+ "path": "mongodb.bson/3.1.0",
+ "hashPath": "mongodb.bson.3.1.0.nupkg.sha512"
+ },
+ "MongoDB.Driver/3.1.0": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-+O7lKaIl7VUHptE0hqTd7UY1G5KDp/o8S4upG7YL4uChMNKD/U6tz9i17nMGHaD/L2AiPLgaJcaDe2XACsegGA==",
+ "path": "mongodb.driver/3.1.0",
+ "hashPath": "mongodb.driver.3.1.0.nupkg.sha512"
+ },
+ "Newtonsoft.Json/13.0.3": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-HrC5BXdl00IP9zeV+0Z848QWPAoCr9P3bDEZguI+gkLcBKAOxix/tLEAAHC+UvDNPv4a2d18lOReHMOagPa+zQ==",
+ "path": "newtonsoft.json/13.0.3",
+ "hashPath": "newtonsoft.json.13.0.3.nupkg.sha512"
+ },
+ "protobuf-net/3.2.45": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-5UZ/ukUHcGbFSl7vNMrHsfjqdxusdd9w7w0fCEXzf3UUtsrGNVCzV5SmF+sCHAbnRV2qPcD1ixiDP7Aj8lX/HA==",
+ "path": "protobuf-net/3.2.45",
+ "hashPath": "protobuf-net.3.2.45.nupkg.sha512"
+ },
+ "protobuf-net.Core/3.2.45": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-PMWatW2NrT1uTXD7etJ4VdQ0wWZLFrIfdRGppD2QX7nzZ0+kIzqhq551u6ZiXJHWJgG4hWFEkSnUnt2aB6posg==",
+ "path": "protobuf-net.core/3.2.45",
+ "hashPath": "protobuf-net.core.3.2.45.nupkg.sha512"
+ },
+ "SharpCompress/0.30.1": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-XqD4TpfyYGa7QTPzaGlMVbcecKnXy4YmYLDWrU+JIj7IuRNl7DH2END+Ll7ekWIY8o3dAMWLFDE1xdhfIWD1nw==",
+ "path": "sharpcompress/0.30.1",
+ "hashPath": "sharpcompress.0.30.1.nupkg.sha512"
+ },
+ "Snappier/1.0.0": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-rFtK2KEI9hIe8gtx3a0YDXdHOpedIf9wYCEYtBEmtlyiWVX3XlCNV03JrmmAi/Cdfn7dxK+k0sjjcLv4fpHnqA==",
+ "path": "snappier/1.0.0",
+ "hashPath": "snappier.1.0.0.nupkg.sha512"
+ },
+ "System.Buffers/4.5.1": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-Rw7ijyl1qqRS0YQD/WycNst8hUUMgrMH4FCn1nNm27M4VxchZ1js3fVjQaANHO5f3sN4isvP4a+Met9Y4YomAg==",
+ "path": "system.buffers/4.5.1",
+ "hashPath": "system.buffers.4.5.1.nupkg.sha512"
+ },
+ "System.Collections.Immutable/7.0.0": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-dQPcs0U1IKnBdRDBkrCTi1FoajSTBzLcVTpjO4MBCMC7f4pDOIPzgBoX8JjG7X6uZRJ8EBxsi8+DR1JuwjnzOQ==",
+ "path": "system.collections.immutable/7.0.0",
+ "hashPath": "system.collections.immutable.7.0.0.nupkg.sha512"
+ },
+ "System.Memory/4.5.5": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-XIWiDvKPXaTveaB7HVganDlOCRoj03l+jrwNvcge/t8vhGYKvqV+dMv6G4SAX2NoNmN0wZfVPTAlFwZcZvVOUw==",
+ "path": "system.memory/4.5.5",
+ "hashPath": "system.memory.4.5.5.nupkg.sha512"
+ },
+ "System.Runtime.CompilerServices.Unsafe/5.0.0": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-ZD9TMpsmYJLrxbbmdvhwt9YEgG5WntEnZ/d1eH8JBX9LBp+Ju8BSBhUGbZMNVHHomWo2KVImJhTDl2hIgw/6MA==",
+ "path": "system.runtime.compilerservices.unsafe/5.0.0",
+ "hashPath": "system.runtime.compilerservices.unsafe.5.0.0.nupkg.sha512"
+ },
+ "System.Security.AccessControl/5.0.0": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-dagJ1mHZO3Ani8GH0PHpPEe/oYO+rVdbQjvjJkBRNQkX4t0r1iaeGn8+/ybkSLEan3/slM0t59SVdHzuHf2jmw==",
+ "path": "system.security.accesscontrol/5.0.0",
+ "hashPath": "system.security.accesscontrol.5.0.0.nupkg.sha512"
+ },
+ "System.Security.Principal.Windows/5.0.0": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-t0MGLukB5WAVU9bO3MGzvlGnyJPgUlcwerXn1kzBRjwLKixT96XV0Uza41W49gVd8zEMFu9vQEFlv0IOrytICA==",
+ "path": "system.security.principal.windows/5.0.0",
+ "hashPath": "system.security.principal.windows.5.0.0.nupkg.sha512"
+ },
+ "ZstdSharp.Port/0.7.3": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-U9Ix4l4cl58Kzz1rJzj5hoVTjmbx1qGMwzAcbv1j/d3NzrFaESIurQyg+ow4mivCgkE3S413y+U9k4WdnEIkRA==",
+ "path": "zstdsharp.port/0.7.3",
+ "hashPath": "zstdsharp.port.0.7.3.nupkg.sha512"
+ }
+ }
+}
\ No newline at end of file
diff --git a/GameServer/Server/APlugins/bin/Release/net9.0/APlugins.dll b/GameServer/Server/APlugins/bin/Release/net9.0/APlugins.dll
new file mode 100644
index 00000000..cc1491d5
Binary files /dev/null and b/GameServer/Server/APlugins/bin/Release/net9.0/APlugins.dll differ
diff --git a/GameServer/Server/APlugins/bin/Release/net9.0/APlugins.pdb b/GameServer/Server/APlugins/bin/Release/net9.0/APlugins.pdb
new file mode 100644
index 00000000..1045ce75
Binary files /dev/null and b/GameServer/Server/APlugins/bin/Release/net9.0/APlugins.pdb differ
diff --git a/GameServer/Server/APlugins/obj/APlugins.csproj.nuget.dgspec.json b/GameServer/Server/APlugins/obj/APlugins.csproj.nuget.dgspec.json
new file mode 100644
index 00000000..e08151ba
--- /dev/null
+++ b/GameServer/Server/APlugins/obj/APlugins.csproj.nuget.dgspec.json
@@ -0,0 +1,95 @@
+{
+ "format": 1,
+ "restore": {
+ "D:\\UnityProject\\EintooAR\\GameServer\\Server\\APlugins\\APlugins.csproj": {}
+ },
+ "projects": {
+ "D:\\UnityProject\\EintooAR\\GameServer\\Server\\APlugins\\APlugins.csproj": {
+ "version": "1.0.0",
+ "restore": {
+ "projectUniqueName": "D:\\UnityProject\\EintooAR\\GameServer\\Server\\APlugins\\APlugins.csproj",
+ "projectName": "APlugins",
+ "projectPath": "D:\\UnityProject\\EintooAR\\GameServer\\Server\\APlugins\\APlugins.csproj",
+ "packagesPath": "C:\\Users\\qq137\\.nuget\\packages\\",
+ "outputPath": "D:\\UnityProject\\EintooAR\\GameServer\\Server\\APlugins\\obj\\",
+ "projectStyle": "PackageReference",
+ "fallbackFolders": [
+ "C:\\Program Files (x86)\\Microsoft Visual Studio\\Shared\\NuGetPackages"
+ ],
+ "configFilePaths": [
+ "C:\\Users\\qq137\\AppData\\Roaming\\NuGet\\NuGet.Config",
+ "C:\\Program Files (x86)\\NuGet\\Config\\Microsoft.VisualStudio.FallbackLocation.config",
+ "C:\\Program Files (x86)\\NuGet\\Config\\Microsoft.VisualStudio.Offline.config"
+ ],
+ "originalTargetFrameworks": [
+ "net9.0"
+ ],
+ "sources": {
+ "C:\\Program Files (x86)\\Microsoft SDKs\\NuGetPackages\\": {},
+ "https://api.nuget.org/v3/index.json": {}
+ },
+ "frameworks": {
+ "net9.0": {
+ "targetAlias": "net9.0",
+ "projectReferences": {}
+ }
+ },
+ "warningProperties": {
+ "warnAsError": [
+ "NU1605"
+ ]
+ },
+ "restoreAuditProperties": {
+ "enableAudit": "true",
+ "auditLevel": "low",
+ "auditMode": "direct"
+ },
+ "SdkAnalysisLevel": "9.0.200"
+ },
+ "frameworks": {
+ "net9.0": {
+ "targetAlias": "net9.0",
+ "dependencies": {
+ "Fantasy-Net.Config": {
+ "target": "Package",
+ "version": "[2024.1.4, )"
+ },
+ "Fantasy-Net.ConfigTable": {
+ "target": "Package",
+ "version": "[2024.2.0, )"
+ },
+ "Fantasy-Net.Tools.ExporterConfigTable": {
+ "target": "Package",
+ "version": "[2024.2.0, )"
+ },
+ "Fantasy-Net.Tools.ExporterNetworkProtocol": {
+ "target": "Package",
+ "version": "[2024.2.24, )"
+ },
+ "Microsoft.IdentityModel.Tokens": {
+ "target": "Package",
+ "version": "[8.7.0, )"
+ }
+ },
+ "imports": [
+ "net461",
+ "net462",
+ "net47",
+ "net471",
+ "net472",
+ "net48",
+ "net481"
+ ],
+ "assetTargetFallback": true,
+ "warn": true,
+ "frameworkReferences": {
+ "Microsoft.NETCore.App": {
+ "privateAssets": "all"
+ }
+ },
+ "runtimeIdentifierGraphPath": "C:\\Program Files\\dotnet\\sdk\\9.0.203/PortableRuntimeIdentifierGraph.json"
+ }
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/GameServer/Server/APlugins/obj/APlugins.csproj.nuget.g.props b/GameServer/Server/APlugins/obj/APlugins.csproj.nuget.g.props
new file mode 100644
index 00000000..2571d6c1
--- /dev/null
+++ b/GameServer/Server/APlugins/obj/APlugins.csproj.nuget.g.props
@@ -0,0 +1,21 @@
+
+
+
+ True
+ NuGet
+ $(MSBuildThisFileDirectory)project.assets.json
+ $(UserProfile)\.nuget\packages\
+ C:\Users\qq137\.nuget\packages\;C:\Program Files (x86)\Microsoft Visual Studio\Shared\NuGetPackages
+ PackageReference
+ 6.12.2
+
+
+
+
+
+
+ C:\Users\qq137\.nuget\packages\fantasy-net.tools.exporternetworkprotocol\2024.2.24
+ C:\Users\qq137\.nuget\packages\fantasy-net.tools.exporterconfigtable\2024.2.0
+ C:\Users\qq137\.nuget\packages\fantasy-net.config\2024.1.4
+
+
\ No newline at end of file
diff --git a/GameServer/Server/APlugins/obj/APlugins.csproj.nuget.g.targets b/GameServer/Server/APlugins/obj/APlugins.csproj.nuget.g.targets
new file mode 100644
index 00000000..ba22e8fa
--- /dev/null
+++ b/GameServer/Server/APlugins/obj/APlugins.csproj.nuget.g.targets
@@ -0,0 +1,10 @@
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/GameServer/Server/APlugins/obj/Debug/net9.0/.NETCoreApp,Version=v9.0.AssemblyAttributes.cs b/GameServer/Server/APlugins/obj/Debug/net9.0/.NETCoreApp,Version=v9.0.AssemblyAttributes.cs
new file mode 100644
index 00000000..feda5e9f
--- /dev/null
+++ b/GameServer/Server/APlugins/obj/Debug/net9.0/.NETCoreApp,Version=v9.0.AssemblyAttributes.cs
@@ -0,0 +1,4 @@
+//
+using System;
+using System.Reflection;
+[assembly: global::System.Runtime.Versioning.TargetFrameworkAttribute(".NETCoreApp,Version=v9.0", FrameworkDisplayName = ".NET 9.0")]
diff --git a/GameServer/Server/APlugins/obj/Debug/net9.0/APlugins.AssemblyInfo.cs b/GameServer/Server/APlugins/obj/Debug/net9.0/APlugins.AssemblyInfo.cs
new file mode 100644
index 00000000..5d780dc9
--- /dev/null
+++ b/GameServer/Server/APlugins/obj/Debug/net9.0/APlugins.AssemblyInfo.cs
@@ -0,0 +1,22 @@
+//------------------------------------------------------------------------------
+//
+// This code was generated by a tool.
+//
+// Changes to this file may cause incorrect behavior and will be lost if
+// the code is regenerated.
+//
+//------------------------------------------------------------------------------
+
+using System;
+using System.Reflection;
+
+[assembly: System.Reflection.AssemblyCompanyAttribute("APlugins")]
+[assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")]
+[assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")]
+[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+93d69c1ff6fc3ec58a9401445592c13d80a5e8fc")]
+[assembly: System.Reflection.AssemblyProductAttribute("APlugins")]
+[assembly: System.Reflection.AssemblyTitleAttribute("APlugins")]
+[assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")]
+
+// 由 MSBuild WriteCodeFragment 类生成。
+
diff --git a/GameServer/Server/APlugins/obj/Debug/net9.0/APlugins.AssemblyInfoInputs.cache b/GameServer/Server/APlugins/obj/Debug/net9.0/APlugins.AssemblyInfoInputs.cache
new file mode 100644
index 00000000..317efc2e
--- /dev/null
+++ b/GameServer/Server/APlugins/obj/Debug/net9.0/APlugins.AssemblyInfoInputs.cache
@@ -0,0 +1 @@
+e921ce1fc41926ac48960caf7a6b4f93b4fa3ac39e90c5379537c824ab3c0aef
diff --git a/GameServer/Server/APlugins/obj/Debug/net9.0/APlugins.GeneratedMSBuildEditorConfig.editorconfig b/GameServer/Server/APlugins/obj/Debug/net9.0/APlugins.GeneratedMSBuildEditorConfig.editorconfig
new file mode 100644
index 00000000..dd74ff68
--- /dev/null
+++ b/GameServer/Server/APlugins/obj/Debug/net9.0/APlugins.GeneratedMSBuildEditorConfig.editorconfig
@@ -0,0 +1,15 @@
+is_global = true
+build_property.TargetFramework = net9.0
+build_property.TargetPlatformMinVersion =
+build_property.UsingMicrosoftNETSdkWeb =
+build_property.ProjectTypeGuids =
+build_property.InvariantGlobalization =
+build_property.PlatformNeutralAssembly =
+build_property.EnforceExtendedAnalyzerRules =
+build_property._SupportedPlatformList = Linux,macOS,Windows
+build_property.RootNamespace = Plugins
+build_property.ProjectDir = D:\UnityProject\EintooAR\GameServer\Server\APlugins\
+build_property.EnableComHosting =
+build_property.EnableGeneratedComInterfaceComImportInterop =
+build_property.EffectiveAnalysisLevelStyle = 9.0
+build_property.EnableCodeStyleSeverity =
diff --git a/GameServer/Server/APlugins/obj/Debug/net9.0/APlugins.GlobalUsings.g.cs b/GameServer/Server/APlugins/obj/Debug/net9.0/APlugins.GlobalUsings.g.cs
new file mode 100644
index 00000000..8578f3d0
--- /dev/null
+++ b/GameServer/Server/APlugins/obj/Debug/net9.0/APlugins.GlobalUsings.g.cs
@@ -0,0 +1,8 @@
+//
+global using global::System;
+global using global::System.Collections.Generic;
+global using global::System.IO;
+global using global::System.Linq;
+global using global::System.Net.Http;
+global using global::System.Threading;
+global using global::System.Threading.Tasks;
diff --git a/GameServer/Server/APlugins/obj/Debug/net9.0/APlugins.assets.cache b/GameServer/Server/APlugins/obj/Debug/net9.0/APlugins.assets.cache
new file mode 100644
index 00000000..e25bed0e
Binary files /dev/null and b/GameServer/Server/APlugins/obj/Debug/net9.0/APlugins.assets.cache differ
diff --git a/GameServer/Server/APlugins/obj/Debug/net9.0/APlugins.csproj.AssemblyReference.cache b/GameServer/Server/APlugins/obj/Debug/net9.0/APlugins.csproj.AssemblyReference.cache
new file mode 100644
index 00000000..45f611dd
Binary files /dev/null and b/GameServer/Server/APlugins/obj/Debug/net9.0/APlugins.csproj.AssemblyReference.cache differ
diff --git a/GameServer/Server/APlugins/obj/Debug/net9.0/APlugins.csproj.CoreCompileInputs.cache b/GameServer/Server/APlugins/obj/Debug/net9.0/APlugins.csproj.CoreCompileInputs.cache
new file mode 100644
index 00000000..021eaaf1
--- /dev/null
+++ b/GameServer/Server/APlugins/obj/Debug/net9.0/APlugins.csproj.CoreCompileInputs.cache
@@ -0,0 +1 @@
+be82aedd3948869fc82be9e73832f5c0595a3ccdf2e06cd509dd95ec85df4810
diff --git a/GameServer/Server/APlugins/obj/Debug/net9.0/APlugins.csproj.FileListAbsolute.txt b/GameServer/Server/APlugins/obj/Debug/net9.0/APlugins.csproj.FileListAbsolute.txt
new file mode 100644
index 00000000..e5b7cf49
--- /dev/null
+++ b/GameServer/Server/APlugins/obj/Debug/net9.0/APlugins.csproj.FileListAbsolute.txt
@@ -0,0 +1,60 @@
+E:\TE_UnityProject\ARSelf\EintooAR\GameServer\Server\APlugins\bin\Debug\net9.0\APlugins.deps.json
+E:\TE_UnityProject\ARSelf\EintooAR\GameServer\Server\APlugins\bin\Debug\net9.0\APlugins.dll
+E:\TE_UnityProject\ARSelf\EintooAR\GameServer\Server\APlugins\bin\Debug\net9.0\APlugins.pdb
+E:\TE_UnityProject\ARSelf\EintooAR\GameServer\Server\APlugins\obj\Debug\net9.0\APlugins.csproj.AssemblyReference.cache
+E:\TE_UnityProject\ARSelf\EintooAR\GameServer\Server\APlugins\obj\Debug\net9.0\APlugins.GeneratedMSBuildEditorConfig.editorconfig
+E:\TE_UnityProject\ARSelf\EintooAR\GameServer\Server\APlugins\obj\Debug\net9.0\APlugins.AssemblyInfoInputs.cache
+E:\TE_UnityProject\ARSelf\EintooAR\GameServer\Server\APlugins\obj\Debug\net9.0\APlugins.AssemblyInfo.cs
+E:\TE_UnityProject\ARSelf\EintooAR\GameServer\Server\APlugins\obj\Debug\net9.0\APlugins.csproj.CoreCompileInputs.cache
+E:\TE_UnityProject\ARSelf\EintooAR\GameServer\Server\APlugins\obj\Debug\net9.0\APlugins.dll
+E:\TE_UnityProject\ARSelf\EintooAR\GameServer\Server\APlugins\obj\Debug\net9.0\refint\APlugins.dll
+E:\TE_UnityProject\ARSelf\EintooAR\GameServer\Server\APlugins\obj\Debug\net9.0\APlugins.pdb
+E:\TE_UnityProject\ARSelf\EintooAR\GameServer\Server\APlugins\obj\Debug\net9.0\ref\APlugins.dll
+E:\UnityProject\NewAR\EintooAR\GameServer\Server\APlugins\bin\Debug\net9.0\APlugins.deps.json
+E:\UnityProject\NewAR\EintooAR\GameServer\Server\APlugins\bin\Debug\net9.0\APlugins.dll
+E:\UnityProject\NewAR\EintooAR\GameServer\Server\APlugins\bin\Debug\net9.0\APlugins.pdb
+E:\UnityProject\NewAR\EintooAR\GameServer\Server\APlugins\obj\Debug\net9.0\APlugins.csproj.AssemblyReference.cache
+E:\UnityProject\NewAR\EintooAR\GameServer\Server\APlugins\obj\Debug\net9.0\APlugins.GeneratedMSBuildEditorConfig.editorconfig
+E:\UnityProject\NewAR\EintooAR\GameServer\Server\APlugins\obj\Debug\net9.0\APlugins.AssemblyInfoInputs.cache
+E:\UnityProject\NewAR\EintooAR\GameServer\Server\APlugins\obj\Debug\net9.0\APlugins.AssemblyInfo.cs
+E:\UnityProject\NewAR\EintooAR\GameServer\Server\APlugins\obj\Debug\net9.0\APlugins.csproj.CoreCompileInputs.cache
+E:\UnityProject\NewAR\EintooAR\GameServer\Server\APlugins\obj\Debug\net9.0\APlugins.dll
+E:\UnityProject\NewAR\EintooAR\GameServer\Server\APlugins\obj\Debug\net9.0\refint\APlugins.dll
+E:\UnityProject\NewAR\EintooAR\GameServer\Server\APlugins\obj\Debug\net9.0\APlugins.pdb
+E:\UnityProject\NewAR\EintooAR\GameServer\Server\APlugins\obj\Debug\net9.0\ref\APlugins.dll
+D:\UGit\EintooAR\GameServer\Server\APlugins\bin\Debug\net9.0\APlugins.deps.json
+D:\UGit\EintooAR\GameServer\Server\APlugins\bin\Debug\net9.0\APlugins.dll
+D:\UGit\EintooAR\GameServer\Server\APlugins\bin\Debug\net9.0\APlugins.pdb
+D:\UGit\EintooAR\GameServer\Server\APlugins\obj\Debug\net9.0\APlugins.csproj.AssemblyReference.cache
+D:\UGit\EintooAR\GameServer\Server\APlugins\obj\Debug\net9.0\APlugins.GeneratedMSBuildEditorConfig.editorconfig
+D:\UGit\EintooAR\GameServer\Server\APlugins\obj\Debug\net9.0\APlugins.AssemblyInfoInputs.cache
+D:\UGit\EintooAR\GameServer\Server\APlugins\obj\Debug\net9.0\APlugins.AssemblyInfo.cs
+D:\UGit\EintooAR\GameServer\Server\APlugins\obj\Debug\net9.0\APlugins.csproj.CoreCompileInputs.cache
+D:\UGit\EintooAR\GameServer\Server\APlugins\obj\Debug\net9.0\APlugins.dll
+D:\UGit\EintooAR\GameServer\Server\APlugins\obj\Debug\net9.0\refint\APlugins.dll
+D:\UGit\EintooAR\GameServer\Server\APlugins\obj\Debug\net9.0\APlugins.pdb
+D:\UGit\EintooAR\GameServer\Server\APlugins\obj\Debug\net9.0\ref\APlugins.dll
+D:\TecentUGit\EintooAR\GameServer\Server\APlugins\bin\Debug\net9.0\APlugins.deps.json
+D:\TecentUGit\EintooAR\GameServer\Server\APlugins\bin\Debug\net9.0\APlugins.dll
+D:\TecentUGit\EintooAR\GameServer\Server\APlugins\bin\Debug\net9.0\APlugins.pdb
+D:\TecentUGit\EintooAR\GameServer\Server\APlugins\obj\Debug\net9.0\APlugins.csproj.AssemblyReference.cache
+D:\TecentUGit\EintooAR\GameServer\Server\APlugins\obj\Debug\net9.0\APlugins.GeneratedMSBuildEditorConfig.editorconfig
+D:\TecentUGit\EintooAR\GameServer\Server\APlugins\obj\Debug\net9.0\APlugins.AssemblyInfoInputs.cache
+D:\TecentUGit\EintooAR\GameServer\Server\APlugins\obj\Debug\net9.0\APlugins.AssemblyInfo.cs
+D:\TecentUGit\EintooAR\GameServer\Server\APlugins\obj\Debug\net9.0\APlugins.csproj.CoreCompileInputs.cache
+D:\TecentUGit\EintooAR\GameServer\Server\APlugins\obj\Debug\net9.0\APlugins.dll
+D:\TecentUGit\EintooAR\GameServer\Server\APlugins\obj\Debug\net9.0\refint\APlugins.dll
+D:\TecentUGit\EintooAR\GameServer\Server\APlugins\obj\Debug\net9.0\APlugins.pdb
+D:\TecentUGit\EintooAR\GameServer\Server\APlugins\obj\Debug\net9.0\ref\APlugins.dll
+D:\UnityProject\EintooAR\GameServer\Server\APlugins\bin\Debug\net9.0\APlugins.deps.json
+D:\UnityProject\EintooAR\GameServer\Server\APlugins\bin\Debug\net9.0\APlugins.dll
+D:\UnityProject\EintooAR\GameServer\Server\APlugins\bin\Debug\net9.0\APlugins.pdb
+D:\UnityProject\EintooAR\GameServer\Server\APlugins\obj\Debug\net9.0\APlugins.csproj.AssemblyReference.cache
+D:\UnityProject\EintooAR\GameServer\Server\APlugins\obj\Debug\net9.0\APlugins.GeneratedMSBuildEditorConfig.editorconfig
+D:\UnityProject\EintooAR\GameServer\Server\APlugins\obj\Debug\net9.0\APlugins.AssemblyInfoInputs.cache
+D:\UnityProject\EintooAR\GameServer\Server\APlugins\obj\Debug\net9.0\APlugins.AssemblyInfo.cs
+D:\UnityProject\EintooAR\GameServer\Server\APlugins\obj\Debug\net9.0\APlugins.csproj.CoreCompileInputs.cache
+D:\UnityProject\EintooAR\GameServer\Server\APlugins\obj\Debug\net9.0\APlugins.dll
+D:\UnityProject\EintooAR\GameServer\Server\APlugins\obj\Debug\net9.0\refint\APlugins.dll
+D:\UnityProject\EintooAR\GameServer\Server\APlugins\obj\Debug\net9.0\APlugins.pdb
+D:\UnityProject\EintooAR\GameServer\Server\APlugins\obj\Debug\net9.0\ref\APlugins.dll
diff --git a/GameServer/Server/APlugins/obj/Debug/net9.0/APlugins.dll b/GameServer/Server/APlugins/obj/Debug/net9.0/APlugins.dll
new file mode 100644
index 00000000..ed581911
Binary files /dev/null and b/GameServer/Server/APlugins/obj/Debug/net9.0/APlugins.dll differ
diff --git a/GameServer/Server/APlugins/obj/Debug/net9.0/APlugins.pdb b/GameServer/Server/APlugins/obj/Debug/net9.0/APlugins.pdb
new file mode 100644
index 00000000..7e866004
Binary files /dev/null and b/GameServer/Server/APlugins/obj/Debug/net9.0/APlugins.pdb differ
diff --git a/GameServer/Server/APlugins/obj/Debug/net9.0/Plugins.AssemblyInfo.cs b/GameServer/Server/APlugins/obj/Debug/net9.0/Plugins.AssemblyInfo.cs
new file mode 100644
index 00000000..4d468e3a
--- /dev/null
+++ b/GameServer/Server/APlugins/obj/Debug/net9.0/Plugins.AssemblyInfo.cs
@@ -0,0 +1,23 @@
+//------------------------------------------------------------------------------
+//
+// 此代码由工具生成。
+// 运行时版本:4.0.30319.42000
+//
+// 对此文件的更改可能会导致不正确的行为,并且如果
+// 重新生成代码,这些更改将会丢失。
+//
+//------------------------------------------------------------------------------
+
+using System;
+using System.Reflection;
+
+[assembly: System.Reflection.AssemblyCompanyAttribute("Plugins")]
+[assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")]
+[assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")]
+[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+c77ba7871ef90e86cce47a22e875f550d637f257")]
+[assembly: System.Reflection.AssemblyProductAttribute("Plugins")]
+[assembly: System.Reflection.AssemblyTitleAttribute("Plugins")]
+[assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")]
+
+// 由 MSBuild WriteCodeFragment 类生成。
+
diff --git a/GameServer/Server/APlugins/obj/Debug/net9.0/Plugins.AssemblyInfoInputs.cache b/GameServer/Server/APlugins/obj/Debug/net9.0/Plugins.AssemblyInfoInputs.cache
new file mode 100644
index 00000000..dad86660
--- /dev/null
+++ b/GameServer/Server/APlugins/obj/Debug/net9.0/Plugins.AssemblyInfoInputs.cache
@@ -0,0 +1 @@
+e8c012a9c80905c36e58f0e459caa9c32f63a4eab1da93888f4a9ab91a67aca5
diff --git a/GameServer/Server/APlugins/obj/Debug/net9.0/Plugins.GeneratedMSBuildEditorConfig.editorconfig b/GameServer/Server/APlugins/obj/Debug/net9.0/Plugins.GeneratedMSBuildEditorConfig.editorconfig
new file mode 100644
index 00000000..b37257b5
--- /dev/null
+++ b/GameServer/Server/APlugins/obj/Debug/net9.0/Plugins.GeneratedMSBuildEditorConfig.editorconfig
@@ -0,0 +1,15 @@
+is_global = true
+build_property.TargetFramework = net9.0
+build_property.TargetPlatformMinVersion =
+build_property.UsingMicrosoftNETSdkWeb =
+build_property.ProjectTypeGuids =
+build_property.InvariantGlobalization =
+build_property.PlatformNeutralAssembly =
+build_property.EnforceExtendedAnalyzerRules =
+build_property._SupportedPlatformList = Linux,macOS,Windows
+build_property.RootNamespace = Plugins
+build_property.ProjectDir = E:\Game\unity\TE_AR\GameServer\Plugins\
+build_property.EnableComHosting =
+build_property.EnableGeneratedComInterfaceComImportInterop =
+build_property.EffectiveAnalysisLevelStyle = 9.0
+build_property.EnableCodeStyleSeverity =
diff --git a/GameServer/Server/APlugins/obj/Debug/net9.0/Plugins.GlobalUsings.g.cs b/GameServer/Server/APlugins/obj/Debug/net9.0/Plugins.GlobalUsings.g.cs
new file mode 100644
index 00000000..8578f3d0
--- /dev/null
+++ b/GameServer/Server/APlugins/obj/Debug/net9.0/Plugins.GlobalUsings.g.cs
@@ -0,0 +1,8 @@
+//
+global using global::System;
+global using global::System.Collections.Generic;
+global using global::System.IO;
+global using global::System.Linq;
+global using global::System.Net.Http;
+global using global::System.Threading;
+global using global::System.Threading.Tasks;
diff --git a/GameServer/Server/APlugins/obj/Debug/net9.0/ref/APlugins.dll b/GameServer/Server/APlugins/obj/Debug/net9.0/ref/APlugins.dll
new file mode 100644
index 00000000..bf6ccc21
Binary files /dev/null and b/GameServer/Server/APlugins/obj/Debug/net9.0/ref/APlugins.dll differ
diff --git a/GameServer/Server/APlugins/obj/Debug/net9.0/refint/APlugins.dll b/GameServer/Server/APlugins/obj/Debug/net9.0/refint/APlugins.dll
new file mode 100644
index 00000000..bf6ccc21
Binary files /dev/null and b/GameServer/Server/APlugins/obj/Debug/net9.0/refint/APlugins.dll differ
diff --git a/GameServer/Server/APlugins/obj/Plugins.csproj.nuget.dgspec.json b/GameServer/Server/APlugins/obj/Plugins.csproj.nuget.dgspec.json
new file mode 100644
index 00000000..10fa6da8
--- /dev/null
+++ b/GameServer/Server/APlugins/obj/Plugins.csproj.nuget.dgspec.json
@@ -0,0 +1,78 @@
+{
+ "format": 1,
+ "restore": {
+ "E:\\Game\\unity\\TE_AR\\GameServer\\Plugins\\Plugins.csproj": {}
+ },
+ "projects": {
+ "E:\\Game\\unity\\TE_AR\\GameServer\\Plugins\\Plugins.csproj": {
+ "version": "1.0.0",
+ "restore": {
+ "projectUniqueName": "E:\\Game\\unity\\TE_AR\\GameServer\\Plugins\\Plugins.csproj",
+ "projectName": "Plugins",
+ "projectPath": "E:\\Game\\unity\\TE_AR\\GameServer\\Plugins\\Plugins.csproj",
+ "packagesPath": "C:\\Users\\Administrator\\.nuget\\packages\\",
+ "outputPath": "E:\\Game\\unity\\TE_AR\\GameServer\\Plugins\\obj\\",
+ "projectStyle": "PackageReference",
+ "fallbackFolders": [
+ "C:\\Program Files (x86)\\Microsoft Visual Studio\\Shared\\NuGetPackages"
+ ],
+ "configFilePaths": [
+ "C:\\Users\\Administrator\\AppData\\Roaming\\NuGet\\NuGet.Config",
+ "C:\\Program Files (x86)\\NuGet\\Config\\Microsoft.VisualStudio.FallbackLocation.config",
+ "C:\\Program Files (x86)\\NuGet\\Config\\Microsoft.VisualStudio.Offline.config"
+ ],
+ "originalTargetFrameworks": [
+ "net9.0"
+ ],
+ "sources": {
+ "C:\\Program Files (x86)\\Microsoft SDKs\\NuGetPackages\\": {},
+ "https://api.nuget.org/v3/index.json": {}
+ },
+ "frameworks": {
+ "net9.0": {
+ "targetAlias": "net9.0",
+ "projectReferences": {}
+ }
+ },
+ "warningProperties": {
+ "warnAsError": [
+ "NU1605"
+ ]
+ },
+ "restoreAuditProperties": {
+ "enableAudit": "true",
+ "auditLevel": "low",
+ "auditMode": "all"
+ }
+ },
+ "frameworks": {
+ "net9.0": {
+ "targetAlias": "net9.0",
+ "imports": [
+ "net461",
+ "net462",
+ "net47",
+ "net471",
+ "net472",
+ "net48",
+ "net481"
+ ],
+ "assetTargetFallback": true,
+ "warn": true,
+ "downloadDependencies": [
+ {
+ "name": "Microsoft.Net.Sdk.Compilers.Toolset",
+ "version": "[9.0.102, 9.0.102]"
+ }
+ ],
+ "frameworkReferences": {
+ "Microsoft.NETCore.App": {
+ "privateAssets": "all"
+ }
+ },
+ "runtimeIdentifierGraphPath": "C:\\Program Files\\dotnet\\sdk\\9.0.102/PortableRuntimeIdentifierGraph.json"
+ }
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/GameServer/Server/APlugins/obj/Plugins.csproj.nuget.g.props b/GameServer/Server/APlugins/obj/Plugins.csproj.nuget.g.props
new file mode 100644
index 00000000..d62c82ee
--- /dev/null
+++ b/GameServer/Server/APlugins/obj/Plugins.csproj.nuget.g.props
@@ -0,0 +1,16 @@
+
+
+
+ True
+ NuGet
+ $(MSBuildThisFileDirectory)project.assets.json
+ $(UserProfile)\.nuget\packages\
+ C:\Users\Administrator\.nuget\packages\;C:\Program Files (x86)\Microsoft Visual Studio\Shared\NuGetPackages
+ PackageReference
+ 6.11.1
+
+
+
+
+
+
\ No newline at end of file
diff --git a/GameServer/Server/APlugins/obj/Plugins.csproj.nuget.g.targets b/GameServer/Server/APlugins/obj/Plugins.csproj.nuget.g.targets
new file mode 100644
index 00000000..3dc06ef3
--- /dev/null
+++ b/GameServer/Server/APlugins/obj/Plugins.csproj.nuget.g.targets
@@ -0,0 +1,2 @@
+
+
\ No newline at end of file
diff --git a/GameServer/Server/APlugins/obj/Release/net9.0/.NETCoreApp,Version=v9.0.AssemblyAttributes.cs b/GameServer/Server/APlugins/obj/Release/net9.0/.NETCoreApp,Version=v9.0.AssemblyAttributes.cs
new file mode 100644
index 00000000..feda5e9f
--- /dev/null
+++ b/GameServer/Server/APlugins/obj/Release/net9.0/.NETCoreApp,Version=v9.0.AssemblyAttributes.cs
@@ -0,0 +1,4 @@
+//
+using System;
+using System.Reflection;
+[assembly: global::System.Runtime.Versioning.TargetFrameworkAttribute(".NETCoreApp,Version=v9.0", FrameworkDisplayName = ".NET 9.0")]
diff --git a/GameServer/Server/APlugins/obj/Release/net9.0/APlugins.AssemblyInfo.cs b/GameServer/Server/APlugins/obj/Release/net9.0/APlugins.AssemblyInfo.cs
new file mode 100644
index 00000000..8b845c79
--- /dev/null
+++ b/GameServer/Server/APlugins/obj/Release/net9.0/APlugins.AssemblyInfo.cs
@@ -0,0 +1,22 @@
+//------------------------------------------------------------------------------
+//
+// This code was generated by a tool.
+//
+// Changes to this file may cause incorrect behavior and will be lost if
+// the code is regenerated.
+//
+//------------------------------------------------------------------------------
+
+using System;
+using System.Reflection;
+
+[assembly: System.Reflection.AssemblyCompanyAttribute("APlugins")]
+[assembly: System.Reflection.AssemblyConfigurationAttribute("Release")]
+[assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")]
+[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+4710d1c9d412b6a31c2ed97fac4853f5c41daeb1")]
+[assembly: System.Reflection.AssemblyProductAttribute("APlugins")]
+[assembly: System.Reflection.AssemblyTitleAttribute("APlugins")]
+[assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")]
+
+// 由 MSBuild WriteCodeFragment 类生成。
+
diff --git a/GameServer/Server/APlugins/obj/Release/net9.0/APlugins.AssemblyInfoInputs.cache b/GameServer/Server/APlugins/obj/Release/net9.0/APlugins.AssemblyInfoInputs.cache
new file mode 100644
index 00000000..f6c04519
--- /dev/null
+++ b/GameServer/Server/APlugins/obj/Release/net9.0/APlugins.AssemblyInfoInputs.cache
@@ -0,0 +1 @@
+0da5c3e0b61732a0c63cb05ca63bcd1ccf962f8247d97f42f809d44e15117361
diff --git a/GameServer/Server/APlugins/obj/Release/net9.0/APlugins.GeneratedMSBuildEditorConfig.editorconfig b/GameServer/Server/APlugins/obj/Release/net9.0/APlugins.GeneratedMSBuildEditorConfig.editorconfig
new file mode 100644
index 00000000..9b2d5be9
--- /dev/null
+++ b/GameServer/Server/APlugins/obj/Release/net9.0/APlugins.GeneratedMSBuildEditorConfig.editorconfig
@@ -0,0 +1,15 @@
+is_global = true
+build_property.TargetFramework = net9.0
+build_property.TargetPlatformMinVersion =
+build_property.UsingMicrosoftNETSdkWeb =
+build_property.ProjectTypeGuids =
+build_property.InvariantGlobalization =
+build_property.PlatformNeutralAssembly =
+build_property.EnforceExtendedAnalyzerRules =
+build_property._SupportedPlatformList = Linux,macOS,Windows
+build_property.RootNamespace = Plugins
+build_property.ProjectDir = D:\TecentUGit\EintooAR\GameServer\Server\APlugins\
+build_property.EnableComHosting =
+build_property.EnableGeneratedComInterfaceComImportInterop =
+build_property.EffectiveAnalysisLevelStyle = 9.0
+build_property.EnableCodeStyleSeverity =
diff --git a/GameServer/Server/APlugins/obj/Release/net9.0/APlugins.GlobalUsings.g.cs b/GameServer/Server/APlugins/obj/Release/net9.0/APlugins.GlobalUsings.g.cs
new file mode 100644
index 00000000..8578f3d0
--- /dev/null
+++ b/GameServer/Server/APlugins/obj/Release/net9.0/APlugins.GlobalUsings.g.cs
@@ -0,0 +1,8 @@
+//
+global using global::System;
+global using global::System.Collections.Generic;
+global using global::System.IO;
+global using global::System.Linq;
+global using global::System.Net.Http;
+global using global::System.Threading;
+global using global::System.Threading.Tasks;
diff --git a/GameServer/Server/APlugins/obj/Release/net9.0/APlugins.assets.cache b/GameServer/Server/APlugins/obj/Release/net9.0/APlugins.assets.cache
new file mode 100644
index 00000000..101dc7ec
Binary files /dev/null and b/GameServer/Server/APlugins/obj/Release/net9.0/APlugins.assets.cache differ
diff --git a/GameServer/Server/APlugins/obj/Release/net9.0/APlugins.csproj.AssemblyReference.cache b/GameServer/Server/APlugins/obj/Release/net9.0/APlugins.csproj.AssemblyReference.cache
new file mode 100644
index 00000000..8d516fbd
Binary files /dev/null and b/GameServer/Server/APlugins/obj/Release/net9.0/APlugins.csproj.AssemblyReference.cache differ
diff --git a/GameServer/Server/APlugins/obj/Release/net9.0/APlugins.csproj.CoreCompileInputs.cache b/GameServer/Server/APlugins/obj/Release/net9.0/APlugins.csproj.CoreCompileInputs.cache
new file mode 100644
index 00000000..47e2e713
--- /dev/null
+++ b/GameServer/Server/APlugins/obj/Release/net9.0/APlugins.csproj.CoreCompileInputs.cache
@@ -0,0 +1 @@
+920b3c0a8dde3074bf4b59373f23c57018290d079e57ad750d0b9fa46a861176
diff --git a/GameServer/Server/APlugins/obj/Release/net9.0/APlugins.csproj.FileListAbsolute.txt b/GameServer/Server/APlugins/obj/Release/net9.0/APlugins.csproj.FileListAbsolute.txt
new file mode 100644
index 00000000..ef400102
--- /dev/null
+++ b/GameServer/Server/APlugins/obj/Release/net9.0/APlugins.csproj.FileListAbsolute.txt
@@ -0,0 +1,12 @@
+D:\TecentUGit\EintooAR\GameServer\Server\APlugins\bin\Release\net9.0\APlugins.deps.json
+D:\TecentUGit\EintooAR\GameServer\Server\APlugins\bin\Release\net9.0\APlugins.dll
+D:\TecentUGit\EintooAR\GameServer\Server\APlugins\bin\Release\net9.0\APlugins.pdb
+D:\TecentUGit\EintooAR\GameServer\Server\APlugins\obj\Release\net9.0\APlugins.csproj.AssemblyReference.cache
+D:\TecentUGit\EintooAR\GameServer\Server\APlugins\obj\Release\net9.0\APlugins.GeneratedMSBuildEditorConfig.editorconfig
+D:\TecentUGit\EintooAR\GameServer\Server\APlugins\obj\Release\net9.0\APlugins.AssemblyInfoInputs.cache
+D:\TecentUGit\EintooAR\GameServer\Server\APlugins\obj\Release\net9.0\APlugins.AssemblyInfo.cs
+D:\TecentUGit\EintooAR\GameServer\Server\APlugins\obj\Release\net9.0\APlugins.csproj.CoreCompileInputs.cache
+D:\TecentUGit\EintooAR\GameServer\Server\APlugins\obj\Release\net9.0\APlugins.dll
+D:\TecentUGit\EintooAR\GameServer\Server\APlugins\obj\Release\net9.0\refint\APlugins.dll
+D:\TecentUGit\EintooAR\GameServer\Server\APlugins\obj\Release\net9.0\APlugins.pdb
+D:\TecentUGit\EintooAR\GameServer\Server\APlugins\obj\Release\net9.0\ref\APlugins.dll
diff --git a/GameServer/Server/APlugins/obj/Release/net9.0/APlugins.dll b/GameServer/Server/APlugins/obj/Release/net9.0/APlugins.dll
new file mode 100644
index 00000000..cc1491d5
Binary files /dev/null and b/GameServer/Server/APlugins/obj/Release/net9.0/APlugins.dll differ
diff --git a/GameServer/Server/APlugins/obj/Release/net9.0/APlugins.pdb b/GameServer/Server/APlugins/obj/Release/net9.0/APlugins.pdb
new file mode 100644
index 00000000..1045ce75
Binary files /dev/null and b/GameServer/Server/APlugins/obj/Release/net9.0/APlugins.pdb differ
diff --git a/GameServer/Server/APlugins/obj/Release/net9.0/ref/APlugins.dll b/GameServer/Server/APlugins/obj/Release/net9.0/ref/APlugins.dll
new file mode 100644
index 00000000..902789f0
Binary files /dev/null and b/GameServer/Server/APlugins/obj/Release/net9.0/ref/APlugins.dll differ
diff --git a/GameServer/Server/APlugins/obj/Release/net9.0/refint/APlugins.dll b/GameServer/Server/APlugins/obj/Release/net9.0/refint/APlugins.dll
new file mode 100644
index 00000000..902789f0
Binary files /dev/null and b/GameServer/Server/APlugins/obj/Release/net9.0/refint/APlugins.dll differ
diff --git a/GameServer/Server/APlugins/obj/project.assets.json b/GameServer/Server/APlugins/obj/project.assets.json
new file mode 100644
index 00000000..c5524262
--- /dev/null
+++ b/GameServer/Server/APlugins/obj/project.assets.json
@@ -0,0 +1,1335 @@
+{
+ "version": 3,
+ "targets": {
+ "net9.0": {
+ "CommandLineParser/2.9.1": {
+ "type": "package",
+ "compile": {
+ "lib/netstandard2.0/CommandLine.dll": {
+ "related": ".xml"
+ }
+ },
+ "runtime": {
+ "lib/netstandard2.0/CommandLine.dll": {
+ "related": ".xml"
+ }
+ }
+ },
+ "DnsClient/1.6.1": {
+ "type": "package",
+ "dependencies": {
+ "Microsoft.Win32.Registry": "5.0.0"
+ },
+ "compile": {
+ "lib/net5.0/DnsClient.dll": {
+ "related": ".xml"
+ }
+ },
+ "runtime": {
+ "lib/net5.0/DnsClient.dll": {
+ "related": ".xml"
+ }
+ }
+ },
+ "Fantasy-Net/2024.2.22": {
+ "type": "package",
+ "dependencies": {
+ "CommandLineParser": "2.9.1",
+ "MongoDB.Bson": "3.1.0",
+ "MongoDB.Driver": "3.1.0",
+ "Newtonsoft.Json": "13.0.3",
+ "protobuf-net": "3.2.45"
+ },
+ "compile": {
+ "lib/net9.0/Fantasy-Net.dll": {}
+ },
+ "runtime": {
+ "lib/net9.0/Fantasy-Net.dll": {}
+ },
+ "frameworkReferences": [
+ "Microsoft.AspNetCore.App"
+ ],
+ "build": {
+ "buildTransitive/Fantasy-Net.targets": {}
+ }
+ },
+ "Fantasy-Net.Config/2024.1.4": {
+ "type": "package",
+ "compile": {
+ "lib/net8.0/Fantasy-Net.Config.dll": {}
+ },
+ "runtime": {
+ "lib/net8.0/Fantasy-Net.Config.dll": {}
+ },
+ "build": {
+ "buildTransitive/Fantasy-Net.Config.targets": {}
+ }
+ },
+ "Fantasy-Net.ConfigTable/2024.2.0": {
+ "type": "package",
+ "dependencies": {
+ "Fantasy-Net": "2024.2.22"
+ },
+ "compile": {
+ "lib/net8.0/Fantasy-Net.ConfigTable.dll": {}
+ },
+ "runtime": {
+ "lib/net8.0/Fantasy-Net.ConfigTable.dll": {}
+ }
+ },
+ "Fantasy-Net.Tools.ExporterConfigTable/2024.2.0": {
+ "type": "package",
+ "compile": {
+ "lib/net8.0/Fantasy.Tools.ExporterConfigTable.dll": {}
+ },
+ "runtime": {
+ "lib/net8.0/Fantasy.Tools.ExporterConfigTable.dll": {}
+ },
+ "build": {
+ "buildTransitive/Fantasy-Net.Tools.ExporterConfigTable.targets": {}
+ }
+ },
+ "Fantasy-Net.Tools.ExporterNetworkProtocol/2024.2.24": {
+ "type": "package",
+ "compile": {
+ "lib/net8.0/Fantasy.Tools.ExporterNetworkProtocol.dll": {}
+ },
+ "runtime": {
+ "lib/net8.0/Fantasy.Tools.ExporterNetworkProtocol.dll": {}
+ },
+ "build": {
+ "buildTransitive/Fantasy-Net.Tools.ExporterNetworkProtocol.targets": {}
+ }
+ },
+ "Microsoft.Extensions.DependencyInjection.Abstractions/8.0.2": {
+ "type": "package",
+ "compile": {
+ "lib/net8.0/Microsoft.Extensions.DependencyInjection.Abstractions.dll": {
+ "related": ".xml"
+ }
+ },
+ "runtime": {
+ "lib/net8.0/Microsoft.Extensions.DependencyInjection.Abstractions.dll": {
+ "related": ".xml"
+ }
+ },
+ "build": {
+ "buildTransitive/net6.0/_._": {}
+ }
+ },
+ "Microsoft.Extensions.Logging.Abstractions/8.0.2": {
+ "type": "package",
+ "dependencies": {
+ "Microsoft.Extensions.DependencyInjection.Abstractions": "8.0.2"
+ },
+ "compile": {
+ "lib/net8.0/Microsoft.Extensions.Logging.Abstractions.dll": {
+ "related": ".xml"
+ }
+ },
+ "runtime": {
+ "lib/net8.0/Microsoft.Extensions.Logging.Abstractions.dll": {
+ "related": ".xml"
+ }
+ },
+ "build": {
+ "buildTransitive/net6.0/Microsoft.Extensions.Logging.Abstractions.targets": {}
+ }
+ },
+ "Microsoft.IdentityModel.Abstractions/8.7.0": {
+ "type": "package",
+ "compile": {
+ "lib/net9.0/Microsoft.IdentityModel.Abstractions.dll": {
+ "related": ".xml"
+ }
+ },
+ "runtime": {
+ "lib/net9.0/Microsoft.IdentityModel.Abstractions.dll": {
+ "related": ".xml"
+ }
+ }
+ },
+ "Microsoft.IdentityModel.Logging/8.7.0": {
+ "type": "package",
+ "dependencies": {
+ "Microsoft.IdentityModel.Abstractions": "8.7.0"
+ },
+ "compile": {
+ "lib/net9.0/Microsoft.IdentityModel.Logging.dll": {
+ "related": ".xml"
+ }
+ },
+ "runtime": {
+ "lib/net9.0/Microsoft.IdentityModel.Logging.dll": {
+ "related": ".xml"
+ }
+ }
+ },
+ "Microsoft.IdentityModel.Tokens/8.7.0": {
+ "type": "package",
+ "dependencies": {
+ "Microsoft.Extensions.Logging.Abstractions": "8.0.2",
+ "Microsoft.IdentityModel.Logging": "8.7.0"
+ },
+ "compile": {
+ "lib/net9.0/Microsoft.IdentityModel.Tokens.dll": {
+ "related": ".xml"
+ }
+ },
+ "runtime": {
+ "lib/net9.0/Microsoft.IdentityModel.Tokens.dll": {
+ "related": ".xml"
+ }
+ }
+ },
+ "Microsoft.NETCore.Platforms/5.0.0": {
+ "type": "package",
+ "compile": {
+ "lib/netstandard1.0/_._": {}
+ },
+ "runtime": {
+ "lib/netstandard1.0/_._": {}
+ }
+ },
+ "Microsoft.Win32.Registry/5.0.0": {
+ "type": "package",
+ "dependencies": {
+ "System.Security.AccessControl": "5.0.0",
+ "System.Security.Principal.Windows": "5.0.0"
+ },
+ "compile": {
+ "ref/netstandard2.0/Microsoft.Win32.Registry.dll": {
+ "related": ".xml"
+ }
+ },
+ "runtime": {
+ "lib/netstandard2.0/Microsoft.Win32.Registry.dll": {
+ "related": ".xml"
+ }
+ },
+ "runtimeTargets": {
+ "runtimes/win/lib/netstandard2.0/Microsoft.Win32.Registry.dll": {
+ "assetType": "runtime",
+ "rid": "win"
+ }
+ }
+ },
+ "MongoDB.Bson/3.1.0": {
+ "type": "package",
+ "dependencies": {
+ "System.Memory": "4.5.5",
+ "System.Runtime.CompilerServices.Unsafe": "5.0.0"
+ },
+ "compile": {
+ "lib/net6.0/MongoDB.Bson.dll": {
+ "related": ".xml"
+ }
+ },
+ "runtime": {
+ "lib/net6.0/MongoDB.Bson.dll": {
+ "related": ".xml"
+ }
+ }
+ },
+ "MongoDB.Driver/3.1.0": {
+ "type": "package",
+ "dependencies": {
+ "DnsClient": "1.6.1",
+ "Microsoft.Extensions.Logging.Abstractions": "2.0.0",
+ "MongoDB.Bson": "3.1.0",
+ "SharpCompress": "0.30.1",
+ "Snappier": "1.0.0",
+ "System.Buffers": "4.5.1",
+ "ZstdSharp.Port": "0.7.3"
+ },
+ "compile": {
+ "lib/net6.0/MongoDB.Driver.dll": {
+ "related": ".xml"
+ }
+ },
+ "runtime": {
+ "lib/net6.0/MongoDB.Driver.dll": {
+ "related": ".xml"
+ }
+ }
+ },
+ "Newtonsoft.Json/13.0.3": {
+ "type": "package",
+ "compile": {
+ "lib/net6.0/Newtonsoft.Json.dll": {
+ "related": ".xml"
+ }
+ },
+ "runtime": {
+ "lib/net6.0/Newtonsoft.Json.dll": {
+ "related": ".xml"
+ }
+ }
+ },
+ "protobuf-net/3.2.45": {
+ "type": "package",
+ "dependencies": {
+ "protobuf-net.Core": "3.2.45"
+ },
+ "compile": {
+ "lib/net6.0/protobuf-net.dll": {
+ "related": ".xml"
+ }
+ },
+ "runtime": {
+ "lib/net6.0/protobuf-net.dll": {
+ "related": ".xml"
+ }
+ }
+ },
+ "protobuf-net.Core/3.2.45": {
+ "type": "package",
+ "dependencies": {
+ "System.Collections.Immutable": "7.0.0"
+ },
+ "compile": {
+ "lib/net6.0/protobuf-net.Core.dll": {
+ "related": ".xml"
+ }
+ },
+ "runtime": {
+ "lib/net6.0/protobuf-net.Core.dll": {
+ "related": ".xml"
+ }
+ }
+ },
+ "SharpCompress/0.30.1": {
+ "type": "package",
+ "compile": {
+ "lib/net5.0/SharpCompress.dll": {}
+ },
+ "runtime": {
+ "lib/net5.0/SharpCompress.dll": {}
+ }
+ },
+ "Snappier/1.0.0": {
+ "type": "package",
+ "compile": {
+ "lib/net5.0/Snappier.dll": {
+ "related": ".xml"
+ }
+ },
+ "runtime": {
+ "lib/net5.0/Snappier.dll": {
+ "related": ".xml"
+ }
+ }
+ },
+ "System.Buffers/4.5.1": {
+ "type": "package",
+ "compile": {
+ "ref/netcoreapp2.0/_._": {}
+ },
+ "runtime": {
+ "lib/netcoreapp2.0/_._": {}
+ }
+ },
+ "System.Collections.Immutable/7.0.0": {
+ "type": "package",
+ "compile": {
+ "lib/net7.0/System.Collections.Immutable.dll": {
+ "related": ".xml"
+ }
+ },
+ "runtime": {
+ "lib/net7.0/System.Collections.Immutable.dll": {
+ "related": ".xml"
+ }
+ },
+ "build": {
+ "buildTransitive/net6.0/_._": {}
+ }
+ },
+ "System.Memory/4.5.5": {
+ "type": "package",
+ "compile": {
+ "ref/netcoreapp2.1/_._": {}
+ },
+ "runtime": {
+ "lib/netcoreapp2.1/_._": {}
+ }
+ },
+ "System.Runtime.CompilerServices.Unsafe/5.0.0": {
+ "type": "package",
+ "compile": {
+ "ref/netstandard2.1/System.Runtime.CompilerServices.Unsafe.dll": {
+ "related": ".xml"
+ }
+ },
+ "runtime": {
+ "lib/netcoreapp2.0/System.Runtime.CompilerServices.Unsafe.dll": {
+ "related": ".xml"
+ }
+ }
+ },
+ "System.Security.AccessControl/5.0.0": {
+ "type": "package",
+ "dependencies": {
+ "Microsoft.NETCore.Platforms": "5.0.0",
+ "System.Security.Principal.Windows": "5.0.0"
+ },
+ "compile": {
+ "ref/netstandard2.0/System.Security.AccessControl.dll": {
+ "related": ".xml"
+ }
+ },
+ "runtime": {
+ "lib/netstandard2.0/System.Security.AccessControl.dll": {
+ "related": ".xml"
+ }
+ },
+ "runtimeTargets": {
+ "runtimes/win/lib/netcoreapp2.0/System.Security.AccessControl.dll": {
+ "assetType": "runtime",
+ "rid": "win"
+ }
+ }
+ },
+ "System.Security.Principal.Windows/5.0.0": {
+ "type": "package",
+ "compile": {
+ "ref/netcoreapp3.0/System.Security.Principal.Windows.dll": {
+ "related": ".xml"
+ }
+ },
+ "runtime": {
+ "lib/netstandard2.0/System.Security.Principal.Windows.dll": {
+ "related": ".xml"
+ }
+ },
+ "runtimeTargets": {
+ "runtimes/unix/lib/netcoreapp2.1/System.Security.Principal.Windows.dll": {
+ "assetType": "runtime",
+ "rid": "unix"
+ },
+ "runtimes/win/lib/netcoreapp2.1/System.Security.Principal.Windows.dll": {
+ "assetType": "runtime",
+ "rid": "win"
+ }
+ }
+ },
+ "ZstdSharp.Port/0.7.3": {
+ "type": "package",
+ "compile": {
+ "lib/net7.0/ZstdSharp.dll": {}
+ },
+ "runtime": {
+ "lib/net7.0/ZstdSharp.dll": {}
+ }
+ }
+ }
+ },
+ "libraries": {
+ "CommandLineParser/2.9.1": {
+ "sha512": "OE0sl1/sQ37bjVsPKKtwQlWDgqaxWgtme3xZz7JssWUzg5JpMIyHgCTY9MVMxOg48fJ1AgGT3tgdH5m/kQ5xhA==",
+ "type": "package",
+ "path": "commandlineparser/2.9.1",
+ "files": [
+ ".nupkg.metadata",
+ ".signature.p7s",
+ "CommandLine20.png",
+ "License.md",
+ "README.md",
+ "commandlineparser.2.9.1.nupkg.sha512",
+ "commandlineparser.nuspec",
+ "lib/net40/CommandLine.dll",
+ "lib/net40/CommandLine.xml",
+ "lib/net45/CommandLine.dll",
+ "lib/net45/CommandLine.xml",
+ "lib/net461/CommandLine.dll",
+ "lib/net461/CommandLine.xml",
+ "lib/netstandard2.0/CommandLine.dll",
+ "lib/netstandard2.0/CommandLine.xml"
+ ]
+ },
+ "DnsClient/1.6.1": {
+ "sha512": "4H/f2uYJOZ+YObZjpY9ABrKZI+JNw3uizp6oMzTXwDw6F+2qIPhpRl/1t68O/6e98+vqNiYGu+lswmwdYUy3gg==",
+ "type": "package",
+ "path": "dnsclient/1.6.1",
+ "files": [
+ ".nupkg.metadata",
+ ".signature.p7s",
+ "dnsclient.1.6.1.nupkg.sha512",
+ "dnsclient.nuspec",
+ "icon.png",
+ "lib/net45/DnsClient.dll",
+ "lib/net45/DnsClient.xml",
+ "lib/net471/DnsClient.dll",
+ "lib/net471/DnsClient.xml",
+ "lib/net5.0/DnsClient.dll",
+ "lib/net5.0/DnsClient.xml",
+ "lib/netstandard1.3/DnsClient.dll",
+ "lib/netstandard1.3/DnsClient.xml",
+ "lib/netstandard2.0/DnsClient.dll",
+ "lib/netstandard2.0/DnsClient.xml",
+ "lib/netstandard2.1/DnsClient.dll",
+ "lib/netstandard2.1/DnsClient.xml"
+ ]
+ },
+ "Fantasy-Net/2024.2.22": {
+ "sha512": "cT6B0YJ5JmbPHBLYgLeVgg2WbXYxxa1tudoIase88uMzAuqU9t7EQ7dFZGSWjP41c5JOQ/0f1q9lzGWTh/hskw==",
+ "type": "package",
+ "path": "fantasy-net/2024.2.22",
+ "files": [
+ ".nupkg.metadata",
+ ".signature.p7s",
+ "LICENSE",
+ "README.md",
+ "buildTransitive/Fantasy-Net.targets",
+ "fantasy-net.2024.2.22.nupkg.sha512",
+ "fantasy-net.nuspec",
+ "icon.png",
+ "lib/net8.0/Fantasy-Net.dll",
+ "lib/net9.0/Fantasy-Net.dll"
+ ]
+ },
+ "Fantasy-Net.Config/2024.1.4": {
+ "sha512": "zStTIJq91mx3VjCcU7eAtrExAcv1Zg+dAd8UdDvpHu7kTY8ldDQMp8sCmez2s+vUTmNyH1hlOgEE3rJILAijfQ==",
+ "type": "package",
+ "path": "fantasy-net.config/2024.1.4",
+ "hasTools": true,
+ "files": [
+ ".nupkg.metadata",
+ ".signature.p7s",
+ "README.md",
+ "buildTransitive/Fantasy-Net.Config.targets",
+ "fantasy-net.config.2024.1.4.nupkg.sha512",
+ "fantasy-net.config.nuspec",
+ "icon.png",
+ "lib/net8.0/Fantasy-Net.Config.dll",
+ "tools/output/Excel/Custom.txt",
+ "tools/output/Excel/Server/MachineConfig.xlsx",
+ "tools/output/Excel/Server/ProcessConfig.xlsx",
+ "tools/output/Excel/Server/SceneConfig.xlsx",
+ "tools/output/Excel/Server/WorldConfig.xlsx",
+ "tools/output/Excel/Version.txt",
+ "tools/output/Json/Server/MachineConfigData.Json",
+ "tools/output/Json/Server/ProcessConfigData.Json",
+ "tools/output/Json/Server/SceneConfigData.Json",
+ "tools/output/Json/Server/WorldConfigData.Json",
+ "tools/output/NetworkProtocol/Inner/InnerMessage.proto",
+ "tools/output/NetworkProtocol/OpCode.Cache",
+ "tools/output/NetworkProtocol/Outer/OuterMessage.proto",
+ "tools/output/NetworkProtocol/RouteType.Config",
+ "tools/output/README.md"
+ ]
+ },
+ "Fantasy-Net.ConfigTable/2024.2.0": {
+ "sha512": "TIpd7Cz5eTx5WlI0QPA/gLkTCNWW4DHFXG5ZXgLjkxgxC4AYpXzvktaU/merldPuccaebc7ld8oVxJ0fejKHEg==",
+ "type": "package",
+ "path": "fantasy-net.configtable/2024.2.0",
+ "files": [
+ ".nupkg.metadata",
+ ".signature.p7s",
+ "fantasy-net.configtable.2024.2.0.nupkg.sha512",
+ "fantasy-net.configtable.nuspec",
+ "icon.png",
+ "lib/net8.0/Fantasy-Net.ConfigTable.dll"
+ ]
+ },
+ "Fantasy-Net.Tools.ExporterConfigTable/2024.2.0": {
+ "sha512": "jPL8qd+9WTsOAOhXVkAOHuwjoyFTGIg6Zr/zsSP+OB4G6sNklcHI0KDnMYWN0EW01fSycl/g1DyRyyDdwZ2iPQ==",
+ "type": "package",
+ "path": "fantasy-net.tools.exporterconfigtable/2024.2.0",
+ "hasTools": true,
+ "files": [
+ ".nupkg.metadata",
+ ".signature.p7s",
+ "buildTransitive/Fantasy-Net.Tools.ExporterConfigTable.targets",
+ "fantasy-net.tools.exporterconfigtable.2024.2.0.nupkg.sha512",
+ "fantasy-net.tools.exporterconfigtable.nuspec",
+ "icon.png",
+ "lib/net8.0/Fantasy.Tools.ExporterConfigTable.dll",
+ "tools/output/CommandLine.dll",
+ "tools/output/EPPlus.Interfaces.dll",
+ "tools/output/EPPlus.System.Drawing.dll",
+ "tools/output/EPPlus.dll",
+ "tools/output/ExporterSettings.json",
+ "tools/output/Fantasy.Tools.ConfigTable",
+ "tools/output/Fantasy.Tools.ConfigTable.deps.json",
+ "tools/output/Fantasy.Tools.ConfigTable.dll",
+ "tools/output/Fantasy.Tools.ConfigTable.pdb",
+ "tools/output/Fantasy.Tools.ConfigTable.runtimeconfig.json",
+ "tools/output/Microsoft.CodeAnalysis.CSharp.dll",
+ "tools/output/Microsoft.CodeAnalysis.dll",
+ "tools/output/Microsoft.Extensions.Configuration.Abstractions.dll",
+ "tools/output/Microsoft.Extensions.Configuration.FileExtensions.dll",
+ "tools/output/Microsoft.Extensions.Configuration.Json.dll",
+ "tools/output/Microsoft.Extensions.Configuration.dll",
+ "tools/output/Microsoft.Extensions.FileProviders.Abstractions.dll",
+ "tools/output/Microsoft.Extensions.FileProviders.Physical.dll",
+ "tools/output/Microsoft.Extensions.FileSystemGlobbing.dll",
+ "tools/output/Microsoft.Extensions.Primitives.dll",
+ "tools/output/Microsoft.IO.RecyclableMemoryStream.dll",
+ "tools/output/Microsoft.Win32.SystemEvents.dll",
+ "tools/output/Newtonsoft.Json.dll",
+ "tools/output/Run.bat",
+ "tools/output/Run.sh",
+ "tools/output/System.Drawing.Common.dll",
+ "tools/output/System.Security.Cryptography.Pkcs.dll",
+ "tools/output/protobuf-net.Core.dll",
+ "tools/output/protobuf-net.dll",
+ "tools/output/runtimes/win/lib/net7.0/Microsoft.Win32.SystemEvents.dll",
+ "tools/output/runtimes/win/lib/net7.0/System.Drawing.Common.dll",
+ "tools/output/runtimes/win/lib/net8.0/System.Security.Cryptography.Pkcs.dll"
+ ]
+ },
+ "Fantasy-Net.Tools.ExporterNetworkProtocol/2024.2.24": {
+ "sha512": "gKbHZBgiTuERq4LCgctChvpYJGVoUbGNHoXq9x7Yz7aUoU7/M6DjuGdZE7XnsyNioddz1Gh992900RUAPwSpjQ==",
+ "type": "package",
+ "path": "fantasy-net.tools.exporternetworkprotocol/2024.2.24",
+ "hasTools": true,
+ "files": [
+ ".nupkg.metadata",
+ ".signature.p7s",
+ "buildTransitive/Fantasy-Net.Tools.ExporterNetworkProtocol.targets",
+ "fantasy-net.tools.exporternetworkprotocol.2024.2.24.nupkg.sha512",
+ "fantasy-net.tools.exporternetworkprotocol.nuspec",
+ "icon.png",
+ "lib/net8.0/Fantasy.Tools.ExporterNetworkProtocol.dll",
+ "tools/output/CommandLine.dll",
+ "tools/output/ExporterSettings.json",
+ "tools/output/Fantasy.Tools.NetworkProtocol",
+ "tools/output/Fantasy.Tools.NetworkProtocol.deps.json",
+ "tools/output/Fantasy.Tools.NetworkProtocol.dll",
+ "tools/output/Fantasy.Tools.NetworkProtocol.pdb",
+ "tools/output/Fantasy.Tools.NetworkProtocol.runtimeconfig.json",
+ "tools/output/Microsoft.Extensions.Configuration.Abstractions.dll",
+ "tools/output/Microsoft.Extensions.Configuration.FileExtensions.dll",
+ "tools/output/Microsoft.Extensions.Configuration.Json.dll",
+ "tools/output/Microsoft.Extensions.Configuration.dll",
+ "tools/output/Microsoft.Extensions.FileProviders.Abstractions.dll",
+ "tools/output/Microsoft.Extensions.FileProviders.Physical.dll",
+ "tools/output/Microsoft.Extensions.FileSystemGlobbing.dll",
+ "tools/output/Microsoft.Extensions.Primitives.dll",
+ "tools/output/Newtonsoft.Json.dll",
+ "tools/output/Run.bat",
+ "tools/output/Run.sh"
+ ]
+ },
+ "Microsoft.Extensions.DependencyInjection.Abstractions/8.0.2": {
+ "sha512": "3iE7UF7MQkCv1cxzCahz+Y/guQbTqieyxyaWKhrRO91itI9cOKO76OHeQDahqG4MmW5umr3CcCvGmK92lWNlbg==",
+ "type": "package",
+ "path": "microsoft.extensions.dependencyinjection.abstractions/8.0.2",
+ "files": [
+ ".nupkg.metadata",
+ ".signature.p7s",
+ "Icon.png",
+ "LICENSE.TXT",
+ "PACKAGE.md",
+ "THIRD-PARTY-NOTICES.TXT",
+ "buildTransitive/net461/Microsoft.Extensions.DependencyInjection.Abstractions.targets",
+ "buildTransitive/net462/_._",
+ "buildTransitive/net6.0/_._",
+ "buildTransitive/netcoreapp2.0/Microsoft.Extensions.DependencyInjection.Abstractions.targets",
+ "lib/net462/Microsoft.Extensions.DependencyInjection.Abstractions.dll",
+ "lib/net462/Microsoft.Extensions.DependencyInjection.Abstractions.xml",
+ "lib/net6.0/Microsoft.Extensions.DependencyInjection.Abstractions.dll",
+ "lib/net6.0/Microsoft.Extensions.DependencyInjection.Abstractions.xml",
+ "lib/net7.0/Microsoft.Extensions.DependencyInjection.Abstractions.dll",
+ "lib/net7.0/Microsoft.Extensions.DependencyInjection.Abstractions.xml",
+ "lib/net8.0/Microsoft.Extensions.DependencyInjection.Abstractions.dll",
+ "lib/net8.0/Microsoft.Extensions.DependencyInjection.Abstractions.xml",
+ "lib/netstandard2.0/Microsoft.Extensions.DependencyInjection.Abstractions.dll",
+ "lib/netstandard2.0/Microsoft.Extensions.DependencyInjection.Abstractions.xml",
+ "lib/netstandard2.1/Microsoft.Extensions.DependencyInjection.Abstractions.dll",
+ "lib/netstandard2.1/Microsoft.Extensions.DependencyInjection.Abstractions.xml",
+ "microsoft.extensions.dependencyinjection.abstractions.8.0.2.nupkg.sha512",
+ "microsoft.extensions.dependencyinjection.abstractions.nuspec",
+ "useSharedDesignerContext.txt"
+ ]
+ },
+ "Microsoft.Extensions.Logging.Abstractions/8.0.2": {
+ "sha512": "nroMDjS7hNBPtkZqVBbSiQaQjWRDxITI8Y7XnDs97rqG3EbzVTNLZQf7bIeUJcaHOV8bca47s1Uxq94+2oGdxA==",
+ "type": "package",
+ "path": "microsoft.extensions.logging.abstractions/8.0.2",
+ "files": [
+ ".nupkg.metadata",
+ ".signature.p7s",
+ "Icon.png",
+ "LICENSE.TXT",
+ "PACKAGE.md",
+ "THIRD-PARTY-NOTICES.TXT",
+ "analyzers/dotnet/roslyn3.11/cs/Microsoft.Extensions.Logging.Generators.dll",
+ "analyzers/dotnet/roslyn3.11/cs/cs/Microsoft.Extensions.Logging.Generators.resources.dll",
+ "analyzers/dotnet/roslyn3.11/cs/de/Microsoft.Extensions.Logging.Generators.resources.dll",
+ "analyzers/dotnet/roslyn3.11/cs/es/Microsoft.Extensions.Logging.Generators.resources.dll",
+ "analyzers/dotnet/roslyn3.11/cs/fr/Microsoft.Extensions.Logging.Generators.resources.dll",
+ "analyzers/dotnet/roslyn3.11/cs/it/Microsoft.Extensions.Logging.Generators.resources.dll",
+ "analyzers/dotnet/roslyn3.11/cs/ja/Microsoft.Extensions.Logging.Generators.resources.dll",
+ "analyzers/dotnet/roslyn3.11/cs/ko/Microsoft.Extensions.Logging.Generators.resources.dll",
+ "analyzers/dotnet/roslyn3.11/cs/pl/Microsoft.Extensions.Logging.Generators.resources.dll",
+ "analyzers/dotnet/roslyn3.11/cs/pt-BR/Microsoft.Extensions.Logging.Generators.resources.dll",
+ "analyzers/dotnet/roslyn3.11/cs/ru/Microsoft.Extensions.Logging.Generators.resources.dll",
+ "analyzers/dotnet/roslyn3.11/cs/tr/Microsoft.Extensions.Logging.Generators.resources.dll",
+ "analyzers/dotnet/roslyn3.11/cs/zh-Hans/Microsoft.Extensions.Logging.Generators.resources.dll",
+ "analyzers/dotnet/roslyn3.11/cs/zh-Hant/Microsoft.Extensions.Logging.Generators.resources.dll",
+ "analyzers/dotnet/roslyn4.0/cs/Microsoft.Extensions.Logging.Generators.dll",
+ "analyzers/dotnet/roslyn4.0/cs/cs/Microsoft.Extensions.Logging.Generators.resources.dll",
+ "analyzers/dotnet/roslyn4.0/cs/de/Microsoft.Extensions.Logging.Generators.resources.dll",
+ "analyzers/dotnet/roslyn4.0/cs/es/Microsoft.Extensions.Logging.Generators.resources.dll",
+ "analyzers/dotnet/roslyn4.0/cs/fr/Microsoft.Extensions.Logging.Generators.resources.dll",
+ "analyzers/dotnet/roslyn4.0/cs/it/Microsoft.Extensions.Logging.Generators.resources.dll",
+ "analyzers/dotnet/roslyn4.0/cs/ja/Microsoft.Extensions.Logging.Generators.resources.dll",
+ "analyzers/dotnet/roslyn4.0/cs/ko/Microsoft.Extensions.Logging.Generators.resources.dll",
+ "analyzers/dotnet/roslyn4.0/cs/pl/Microsoft.Extensions.Logging.Generators.resources.dll",
+ "analyzers/dotnet/roslyn4.0/cs/pt-BR/Microsoft.Extensions.Logging.Generators.resources.dll",
+ "analyzers/dotnet/roslyn4.0/cs/ru/Microsoft.Extensions.Logging.Generators.resources.dll",
+ "analyzers/dotnet/roslyn4.0/cs/tr/Microsoft.Extensions.Logging.Generators.resources.dll",
+ "analyzers/dotnet/roslyn4.0/cs/zh-Hans/Microsoft.Extensions.Logging.Generators.resources.dll",
+ "analyzers/dotnet/roslyn4.0/cs/zh-Hant/Microsoft.Extensions.Logging.Generators.resources.dll",
+ "analyzers/dotnet/roslyn4.4/cs/Microsoft.Extensions.Logging.Generators.dll",
+ "analyzers/dotnet/roslyn4.4/cs/cs/Microsoft.Extensions.Logging.Generators.resources.dll",
+ "analyzers/dotnet/roslyn4.4/cs/de/Microsoft.Extensions.Logging.Generators.resources.dll",
+ "analyzers/dotnet/roslyn4.4/cs/es/Microsoft.Extensions.Logging.Generators.resources.dll",
+ "analyzers/dotnet/roslyn4.4/cs/fr/Microsoft.Extensions.Logging.Generators.resources.dll",
+ "analyzers/dotnet/roslyn4.4/cs/it/Microsoft.Extensions.Logging.Generators.resources.dll",
+ "analyzers/dotnet/roslyn4.4/cs/ja/Microsoft.Extensions.Logging.Generators.resources.dll",
+ "analyzers/dotnet/roslyn4.4/cs/ko/Microsoft.Extensions.Logging.Generators.resources.dll",
+ "analyzers/dotnet/roslyn4.4/cs/pl/Microsoft.Extensions.Logging.Generators.resources.dll",
+ "analyzers/dotnet/roslyn4.4/cs/pt-BR/Microsoft.Extensions.Logging.Generators.resources.dll",
+ "analyzers/dotnet/roslyn4.4/cs/ru/Microsoft.Extensions.Logging.Generators.resources.dll",
+ "analyzers/dotnet/roslyn4.4/cs/tr/Microsoft.Extensions.Logging.Generators.resources.dll",
+ "analyzers/dotnet/roslyn4.4/cs/zh-Hans/Microsoft.Extensions.Logging.Generators.resources.dll",
+ "analyzers/dotnet/roslyn4.4/cs/zh-Hant/Microsoft.Extensions.Logging.Generators.resources.dll",
+ "buildTransitive/net461/Microsoft.Extensions.Logging.Abstractions.targets",
+ "buildTransitive/net462/Microsoft.Extensions.Logging.Abstractions.targets",
+ "buildTransitive/net6.0/Microsoft.Extensions.Logging.Abstractions.targets",
+ "buildTransitive/netcoreapp2.0/Microsoft.Extensions.Logging.Abstractions.targets",
+ "buildTransitive/netstandard2.0/Microsoft.Extensions.Logging.Abstractions.targets",
+ "lib/net462/Microsoft.Extensions.Logging.Abstractions.dll",
+ "lib/net462/Microsoft.Extensions.Logging.Abstractions.xml",
+ "lib/net6.0/Microsoft.Extensions.Logging.Abstractions.dll",
+ "lib/net6.0/Microsoft.Extensions.Logging.Abstractions.xml",
+ "lib/net7.0/Microsoft.Extensions.Logging.Abstractions.dll",
+ "lib/net7.0/Microsoft.Extensions.Logging.Abstractions.xml",
+ "lib/net8.0/Microsoft.Extensions.Logging.Abstractions.dll",
+ "lib/net8.0/Microsoft.Extensions.Logging.Abstractions.xml",
+ "lib/netstandard2.0/Microsoft.Extensions.Logging.Abstractions.dll",
+ "lib/netstandard2.0/Microsoft.Extensions.Logging.Abstractions.xml",
+ "microsoft.extensions.logging.abstractions.8.0.2.nupkg.sha512",
+ "microsoft.extensions.logging.abstractions.nuspec",
+ "useSharedDesignerContext.txt"
+ ]
+ },
+ "Microsoft.IdentityModel.Abstractions/8.7.0": {
+ "sha512": "OQd5aVepYvh5evOmBMeAYjMIpEcTf1ZCBZaU7Nh/RlhhdXefjFDJeP1L2F2zeNT1unFr+wUu/h3Ac2Xb4BXU6w==",
+ "type": "package",
+ "path": "microsoft.identitymodel.abstractions/8.7.0",
+ "files": [
+ ".nupkg.metadata",
+ ".signature.p7s",
+ "README.md",
+ "lib/net462/Microsoft.IdentityModel.Abstractions.dll",
+ "lib/net462/Microsoft.IdentityModel.Abstractions.xml",
+ "lib/net472/Microsoft.IdentityModel.Abstractions.dll",
+ "lib/net472/Microsoft.IdentityModel.Abstractions.xml",
+ "lib/net6.0/Microsoft.IdentityModel.Abstractions.dll",
+ "lib/net6.0/Microsoft.IdentityModel.Abstractions.xml",
+ "lib/net8.0/Microsoft.IdentityModel.Abstractions.dll",
+ "lib/net8.0/Microsoft.IdentityModel.Abstractions.xml",
+ "lib/net9.0/Microsoft.IdentityModel.Abstractions.dll",
+ "lib/net9.0/Microsoft.IdentityModel.Abstractions.xml",
+ "lib/netstandard2.0/Microsoft.IdentityModel.Abstractions.dll",
+ "lib/netstandard2.0/Microsoft.IdentityModel.Abstractions.xml",
+ "microsoft.identitymodel.abstractions.8.7.0.nupkg.sha512",
+ "microsoft.identitymodel.abstractions.nuspec"
+ ]
+ },
+ "Microsoft.IdentityModel.Logging/8.7.0": {
+ "sha512": "Bs0TznPAu+nxa9rAVHJ+j3CYECHJkT3tG8AyBfhFYlT5ldsDhoxFT7J+PKxJHLf+ayqWfvDZHHc4639W2FQCxA==",
+ "type": "package",
+ "path": "microsoft.identitymodel.logging/8.7.0",
+ "files": [
+ ".nupkg.metadata",
+ ".signature.p7s",
+ "README.md",
+ "lib/net462/Microsoft.IdentityModel.Logging.dll",
+ "lib/net462/Microsoft.IdentityModel.Logging.xml",
+ "lib/net472/Microsoft.IdentityModel.Logging.dll",
+ "lib/net472/Microsoft.IdentityModel.Logging.xml",
+ "lib/net6.0/Microsoft.IdentityModel.Logging.dll",
+ "lib/net6.0/Microsoft.IdentityModel.Logging.xml",
+ "lib/net8.0/Microsoft.IdentityModel.Logging.dll",
+ "lib/net8.0/Microsoft.IdentityModel.Logging.xml",
+ "lib/net9.0/Microsoft.IdentityModel.Logging.dll",
+ "lib/net9.0/Microsoft.IdentityModel.Logging.xml",
+ "lib/netstandard2.0/Microsoft.IdentityModel.Logging.dll",
+ "lib/netstandard2.0/Microsoft.IdentityModel.Logging.xml",
+ "microsoft.identitymodel.logging.8.7.0.nupkg.sha512",
+ "microsoft.identitymodel.logging.nuspec"
+ ]
+ },
+ "Microsoft.IdentityModel.Tokens/8.7.0": {
+ "sha512": "5Z6voXjRXAnGklhmZd1mKz89UhcF5ZQQZaZc2iKrOuL4Li1UihG2vlJx8IbiFAOIxy/xdbsAm0A+WZEaH5fxng==",
+ "type": "package",
+ "path": "microsoft.identitymodel.tokens/8.7.0",
+ "files": [
+ ".nupkg.metadata",
+ ".signature.p7s",
+ "README.md",
+ "lib/net462/Microsoft.IdentityModel.Tokens.dll",
+ "lib/net462/Microsoft.IdentityModel.Tokens.xml",
+ "lib/net472/Microsoft.IdentityModel.Tokens.dll",
+ "lib/net472/Microsoft.IdentityModel.Tokens.xml",
+ "lib/net6.0/Microsoft.IdentityModel.Tokens.dll",
+ "lib/net6.0/Microsoft.IdentityModel.Tokens.xml",
+ "lib/net8.0/Microsoft.IdentityModel.Tokens.dll",
+ "lib/net8.0/Microsoft.IdentityModel.Tokens.xml",
+ "lib/net9.0/Microsoft.IdentityModel.Tokens.dll",
+ "lib/net9.0/Microsoft.IdentityModel.Tokens.xml",
+ "lib/netstandard2.0/Microsoft.IdentityModel.Tokens.dll",
+ "lib/netstandard2.0/Microsoft.IdentityModel.Tokens.xml",
+ "microsoft.identitymodel.tokens.8.7.0.nupkg.sha512",
+ "microsoft.identitymodel.tokens.nuspec"
+ ]
+ },
+ "Microsoft.NETCore.Platforms/5.0.0": {
+ "sha512": "VyPlqzH2wavqquTcYpkIIAQ6WdenuKoFN0BdYBbCWsclXacSOHNQn66Gt4z5NBqEYW0FAPm5rlvki9ZiCij5xQ==",
+ "type": "package",
+ "path": "microsoft.netcore.platforms/5.0.0",
+ "files": [
+ ".nupkg.metadata",
+ ".signature.p7s",
+ "Icon.png",
+ "LICENSE.TXT",
+ "THIRD-PARTY-NOTICES.TXT",
+ "lib/netstandard1.0/_._",
+ "microsoft.netcore.platforms.5.0.0.nupkg.sha512",
+ "microsoft.netcore.platforms.nuspec",
+ "runtime.json",
+ "useSharedDesignerContext.txt",
+ "version.txt"
+ ]
+ },
+ "Microsoft.Win32.Registry/5.0.0": {
+ "sha512": "dDoKi0PnDz31yAyETfRntsLArTlVAVzUzCIvvEDsDsucrl33Dl8pIJG06ePTJTI3tGpeyHS9Cq7Foc/s4EeKcg==",
+ "type": "package",
+ "path": "microsoft.win32.registry/5.0.0",
+ "files": [
+ ".nupkg.metadata",
+ ".signature.p7s",
+ "Icon.png",
+ "LICENSE.TXT",
+ "THIRD-PARTY-NOTICES.TXT",
+ "lib/net46/Microsoft.Win32.Registry.dll",
+ "lib/net461/Microsoft.Win32.Registry.dll",
+ "lib/net461/Microsoft.Win32.Registry.xml",
+ "lib/netstandard1.3/Microsoft.Win32.Registry.dll",
+ "lib/netstandard2.0/Microsoft.Win32.Registry.dll",
+ "lib/netstandard2.0/Microsoft.Win32.Registry.xml",
+ "microsoft.win32.registry.5.0.0.nupkg.sha512",
+ "microsoft.win32.registry.nuspec",
+ "ref/net46/Microsoft.Win32.Registry.dll",
+ "ref/net461/Microsoft.Win32.Registry.dll",
+ "ref/net461/Microsoft.Win32.Registry.xml",
+ "ref/netstandard1.3/Microsoft.Win32.Registry.dll",
+ "ref/netstandard1.3/Microsoft.Win32.Registry.xml",
+ "ref/netstandard1.3/de/Microsoft.Win32.Registry.xml",
+ "ref/netstandard1.3/es/Microsoft.Win32.Registry.xml",
+ "ref/netstandard1.3/fr/Microsoft.Win32.Registry.xml",
+ "ref/netstandard1.3/it/Microsoft.Win32.Registry.xml",
+ "ref/netstandard1.3/ja/Microsoft.Win32.Registry.xml",
+ "ref/netstandard1.3/ko/Microsoft.Win32.Registry.xml",
+ "ref/netstandard1.3/ru/Microsoft.Win32.Registry.xml",
+ "ref/netstandard1.3/zh-hans/Microsoft.Win32.Registry.xml",
+ "ref/netstandard1.3/zh-hant/Microsoft.Win32.Registry.xml",
+ "ref/netstandard2.0/Microsoft.Win32.Registry.dll",
+ "ref/netstandard2.0/Microsoft.Win32.Registry.xml",
+ "runtimes/win/lib/net46/Microsoft.Win32.Registry.dll",
+ "runtimes/win/lib/net461/Microsoft.Win32.Registry.dll",
+ "runtimes/win/lib/net461/Microsoft.Win32.Registry.xml",
+ "runtimes/win/lib/netstandard1.3/Microsoft.Win32.Registry.dll",
+ "runtimes/win/lib/netstandard2.0/Microsoft.Win32.Registry.dll",
+ "runtimes/win/lib/netstandard2.0/Microsoft.Win32.Registry.xml",
+ "useSharedDesignerContext.txt",
+ "version.txt"
+ ]
+ },
+ "MongoDB.Bson/3.1.0": {
+ "sha512": "3dhaZhz18B5vUoEP13o2j8A6zQfkHdZhwBvLZEjDJum4BTLLv1/Z8bt25UQEtpqvYwLgde4R6ekWZ7XAYUMxuw==",
+ "type": "package",
+ "path": "mongodb.bson/3.1.0",
+ "files": [
+ ".nupkg.metadata",
+ ".signature.p7s",
+ "README.md",
+ "lib/net472/MongoDB.Bson.dll",
+ "lib/net472/MongoDB.Bson.xml",
+ "lib/net6.0/MongoDB.Bson.dll",
+ "lib/net6.0/MongoDB.Bson.xml",
+ "lib/netstandard2.1/MongoDB.Bson.dll",
+ "lib/netstandard2.1/MongoDB.Bson.xml",
+ "mongodb.bson.3.1.0.nupkg.sha512",
+ "mongodb.bson.nuspec",
+ "packageIcon.png"
+ ]
+ },
+ "MongoDB.Driver/3.1.0": {
+ "sha512": "+O7lKaIl7VUHptE0hqTd7UY1G5KDp/o8S4upG7YL4uChMNKD/U6tz9i17nMGHaD/L2AiPLgaJcaDe2XACsegGA==",
+ "type": "package",
+ "path": "mongodb.driver/3.1.0",
+ "files": [
+ ".nupkg.metadata",
+ ".signature.p7s",
+ "README.md",
+ "lib/net472/MongoDB.Driver.dll",
+ "lib/net472/MongoDB.Driver.xml",
+ "lib/net6.0/MongoDB.Driver.dll",
+ "lib/net6.0/MongoDB.Driver.xml",
+ "lib/netstandard2.1/MongoDB.Driver.dll",
+ "lib/netstandard2.1/MongoDB.Driver.xml",
+ "mongodb.driver.3.1.0.nupkg.sha512",
+ "mongodb.driver.nuspec",
+ "packageIcon.png"
+ ]
+ },
+ "Newtonsoft.Json/13.0.3": {
+ "sha512": "HrC5BXdl00IP9zeV+0Z848QWPAoCr9P3bDEZguI+gkLcBKAOxix/tLEAAHC+UvDNPv4a2d18lOReHMOagPa+zQ==",
+ "type": "package",
+ "path": "newtonsoft.json/13.0.3",
+ "files": [
+ ".nupkg.metadata",
+ ".signature.p7s",
+ "LICENSE.md",
+ "README.md",
+ "lib/net20/Newtonsoft.Json.dll",
+ "lib/net20/Newtonsoft.Json.xml",
+ "lib/net35/Newtonsoft.Json.dll",
+ "lib/net35/Newtonsoft.Json.xml",
+ "lib/net40/Newtonsoft.Json.dll",
+ "lib/net40/Newtonsoft.Json.xml",
+ "lib/net45/Newtonsoft.Json.dll",
+ "lib/net45/Newtonsoft.Json.xml",
+ "lib/net6.0/Newtonsoft.Json.dll",
+ "lib/net6.0/Newtonsoft.Json.xml",
+ "lib/netstandard1.0/Newtonsoft.Json.dll",
+ "lib/netstandard1.0/Newtonsoft.Json.xml",
+ "lib/netstandard1.3/Newtonsoft.Json.dll",
+ "lib/netstandard1.3/Newtonsoft.Json.xml",
+ "lib/netstandard2.0/Newtonsoft.Json.dll",
+ "lib/netstandard2.0/Newtonsoft.Json.xml",
+ "newtonsoft.json.13.0.3.nupkg.sha512",
+ "newtonsoft.json.nuspec",
+ "packageIcon.png"
+ ]
+ },
+ "protobuf-net/3.2.45": {
+ "sha512": "5UZ/ukUHcGbFSl7vNMrHsfjqdxusdd9w7w0fCEXzf3UUtsrGNVCzV5SmF+sCHAbnRV2qPcD1ixiDP7Aj8lX/HA==",
+ "type": "package",
+ "path": "protobuf-net/3.2.45",
+ "files": [
+ ".nupkg.metadata",
+ ".signature.p7s",
+ "lib/net462/protobuf-net.dll",
+ "lib/net462/protobuf-net.xml",
+ "lib/net6.0/protobuf-net.dll",
+ "lib/net6.0/protobuf-net.xml",
+ "lib/netstandard2.0/protobuf-net.dll",
+ "lib/netstandard2.0/protobuf-net.xml",
+ "lib/netstandard2.1/protobuf-net.dll",
+ "lib/netstandard2.1/protobuf-net.xml",
+ "protobuf-net.3.2.45.nupkg.sha512",
+ "protobuf-net.nuspec",
+ "protobuf-net.png",
+ "readme.md"
+ ]
+ },
+ "protobuf-net.Core/3.2.45": {
+ "sha512": "PMWatW2NrT1uTXD7etJ4VdQ0wWZLFrIfdRGppD2QX7nzZ0+kIzqhq551u6ZiXJHWJgG4hWFEkSnUnt2aB6posg==",
+ "type": "package",
+ "path": "protobuf-net.core/3.2.45",
+ "files": [
+ ".nupkg.metadata",
+ ".signature.p7s",
+ "lib/net462/protobuf-net.Core.dll",
+ "lib/net462/protobuf-net.Core.xml",
+ "lib/net6.0/protobuf-net.Core.dll",
+ "lib/net6.0/protobuf-net.Core.xml",
+ "lib/netstandard2.0/protobuf-net.Core.dll",
+ "lib/netstandard2.0/protobuf-net.Core.xml",
+ "lib/netstandard2.1/protobuf-net.Core.dll",
+ "lib/netstandard2.1/protobuf-net.Core.xml",
+ "protobuf-net.core.3.2.45.nupkg.sha512",
+ "protobuf-net.core.nuspec",
+ "protobuf-net.png",
+ "readme.md"
+ ]
+ },
+ "SharpCompress/0.30.1": {
+ "sha512": "XqD4TpfyYGa7QTPzaGlMVbcecKnXy4YmYLDWrU+JIj7IuRNl7DH2END+Ll7ekWIY8o3dAMWLFDE1xdhfIWD1nw==",
+ "type": "package",
+ "path": "sharpcompress/0.30.1",
+ "files": [
+ ".nupkg.metadata",
+ ".signature.p7s",
+ "lib/net461/SharpCompress.dll",
+ "lib/net5.0/SharpCompress.dll",
+ "lib/netcoreapp3.1/SharpCompress.dll",
+ "lib/netstandard2.0/SharpCompress.dll",
+ "lib/netstandard2.1/SharpCompress.dll",
+ "sharpcompress.0.30.1.nupkg.sha512",
+ "sharpcompress.nuspec"
+ ]
+ },
+ "Snappier/1.0.0": {
+ "sha512": "rFtK2KEI9hIe8gtx3a0YDXdHOpedIf9wYCEYtBEmtlyiWVX3XlCNV03JrmmAi/Cdfn7dxK+k0sjjcLv4fpHnqA==",
+ "type": "package",
+ "path": "snappier/1.0.0",
+ "files": [
+ ".nupkg.metadata",
+ ".signature.p7s",
+ "COPYING.txt",
+ "lib/net5.0/Snappier.dll",
+ "lib/net5.0/Snappier.xml",
+ "lib/netcoreapp3.0/Snappier.dll",
+ "lib/netcoreapp3.0/Snappier.xml",
+ "lib/netstandard2.0/Snappier.dll",
+ "lib/netstandard2.0/Snappier.xml",
+ "lib/netstandard2.1/Snappier.dll",
+ "lib/netstandard2.1/Snappier.xml",
+ "snappier.1.0.0.nupkg.sha512",
+ "snappier.nuspec"
+ ]
+ },
+ "System.Buffers/4.5.1": {
+ "sha512": "Rw7ijyl1qqRS0YQD/WycNst8hUUMgrMH4FCn1nNm27M4VxchZ1js3fVjQaANHO5f3sN4isvP4a+Met9Y4YomAg==",
+ "type": "package",
+ "path": "system.buffers/4.5.1",
+ "files": [
+ ".nupkg.metadata",
+ ".signature.p7s",
+ "LICENSE.TXT",
+ "THIRD-PARTY-NOTICES.TXT",
+ "lib/net461/System.Buffers.dll",
+ "lib/net461/System.Buffers.xml",
+ "lib/netcoreapp2.0/_._",
+ "lib/netstandard1.1/System.Buffers.dll",
+ "lib/netstandard1.1/System.Buffers.xml",
+ "lib/netstandard2.0/System.Buffers.dll",
+ "lib/netstandard2.0/System.Buffers.xml",
+ "lib/uap10.0.16299/_._",
+ "ref/net45/System.Buffers.dll",
+ "ref/net45/System.Buffers.xml",
+ "ref/netcoreapp2.0/_._",
+ "ref/netstandard1.1/System.Buffers.dll",
+ "ref/netstandard1.1/System.Buffers.xml",
+ "ref/netstandard2.0/System.Buffers.dll",
+ "ref/netstandard2.0/System.Buffers.xml",
+ "ref/uap10.0.16299/_._",
+ "system.buffers.4.5.1.nupkg.sha512",
+ "system.buffers.nuspec",
+ "useSharedDesignerContext.txt",
+ "version.txt"
+ ]
+ },
+ "System.Collections.Immutable/7.0.0": {
+ "sha512": "dQPcs0U1IKnBdRDBkrCTi1FoajSTBzLcVTpjO4MBCMC7f4pDOIPzgBoX8JjG7X6uZRJ8EBxsi8+DR1JuwjnzOQ==",
+ "type": "package",
+ "path": "system.collections.immutable/7.0.0",
+ "files": [
+ ".nupkg.metadata",
+ ".signature.p7s",
+ "Icon.png",
+ "LICENSE.TXT",
+ "README.md",
+ "THIRD-PARTY-NOTICES.TXT",
+ "buildTransitive/net461/System.Collections.Immutable.targets",
+ "buildTransitive/net462/_._",
+ "buildTransitive/net6.0/_._",
+ "buildTransitive/netcoreapp2.0/System.Collections.Immutable.targets",
+ "lib/net462/System.Collections.Immutable.dll",
+ "lib/net462/System.Collections.Immutable.xml",
+ "lib/net6.0/System.Collections.Immutable.dll",
+ "lib/net6.0/System.Collections.Immutable.xml",
+ "lib/net7.0/System.Collections.Immutable.dll",
+ "lib/net7.0/System.Collections.Immutable.xml",
+ "lib/netstandard2.0/System.Collections.Immutable.dll",
+ "lib/netstandard2.0/System.Collections.Immutable.xml",
+ "system.collections.immutable.7.0.0.nupkg.sha512",
+ "system.collections.immutable.nuspec",
+ "useSharedDesignerContext.txt"
+ ]
+ },
+ "System.Memory/4.5.5": {
+ "sha512": "XIWiDvKPXaTveaB7HVganDlOCRoj03l+jrwNvcge/t8vhGYKvqV+dMv6G4SAX2NoNmN0wZfVPTAlFwZcZvVOUw==",
+ "type": "package",
+ "path": "system.memory/4.5.5",
+ "files": [
+ ".nupkg.metadata",
+ ".signature.p7s",
+ "LICENSE.TXT",
+ "THIRD-PARTY-NOTICES.TXT",
+ "lib/net461/System.Memory.dll",
+ "lib/net461/System.Memory.xml",
+ "lib/netcoreapp2.1/_._",
+ "lib/netstandard1.1/System.Memory.dll",
+ "lib/netstandard1.1/System.Memory.xml",
+ "lib/netstandard2.0/System.Memory.dll",
+ "lib/netstandard2.0/System.Memory.xml",
+ "ref/netcoreapp2.1/_._",
+ "system.memory.4.5.5.nupkg.sha512",
+ "system.memory.nuspec",
+ "useSharedDesignerContext.txt",
+ "version.txt"
+ ]
+ },
+ "System.Runtime.CompilerServices.Unsafe/5.0.0": {
+ "sha512": "ZD9TMpsmYJLrxbbmdvhwt9YEgG5WntEnZ/d1eH8JBX9LBp+Ju8BSBhUGbZMNVHHomWo2KVImJhTDl2hIgw/6MA==",
+ "type": "package",
+ "path": "system.runtime.compilerservices.unsafe/5.0.0",
+ "files": [
+ ".nupkg.metadata",
+ ".signature.p7s",
+ "Icon.png",
+ "LICENSE.TXT",
+ "THIRD-PARTY-NOTICES.TXT",
+ "lib/net45/System.Runtime.CompilerServices.Unsafe.dll",
+ "lib/net45/System.Runtime.CompilerServices.Unsafe.xml",
+ "lib/netcoreapp2.0/System.Runtime.CompilerServices.Unsafe.dll",
+ "lib/netcoreapp2.0/System.Runtime.CompilerServices.Unsafe.xml",
+ "lib/netstandard1.0/System.Runtime.CompilerServices.Unsafe.dll",
+ "lib/netstandard1.0/System.Runtime.CompilerServices.Unsafe.xml",
+ "lib/netstandard2.0/System.Runtime.CompilerServices.Unsafe.dll",
+ "lib/netstandard2.0/System.Runtime.CompilerServices.Unsafe.xml",
+ "ref/net461/System.Runtime.CompilerServices.Unsafe.dll",
+ "ref/net461/System.Runtime.CompilerServices.Unsafe.xml",
+ "ref/netstandard1.0/System.Runtime.CompilerServices.Unsafe.dll",
+ "ref/netstandard1.0/System.Runtime.CompilerServices.Unsafe.xml",
+ "ref/netstandard2.0/System.Runtime.CompilerServices.Unsafe.dll",
+ "ref/netstandard2.0/System.Runtime.CompilerServices.Unsafe.xml",
+ "ref/netstandard2.1/System.Runtime.CompilerServices.Unsafe.dll",
+ "ref/netstandard2.1/System.Runtime.CompilerServices.Unsafe.xml",
+ "system.runtime.compilerservices.unsafe.5.0.0.nupkg.sha512",
+ "system.runtime.compilerservices.unsafe.nuspec",
+ "useSharedDesignerContext.txt",
+ "version.txt"
+ ]
+ },
+ "System.Security.AccessControl/5.0.0": {
+ "sha512": "dagJ1mHZO3Ani8GH0PHpPEe/oYO+rVdbQjvjJkBRNQkX4t0r1iaeGn8+/ybkSLEan3/slM0t59SVdHzuHf2jmw==",
+ "type": "package",
+ "path": "system.security.accesscontrol/5.0.0",
+ "files": [
+ ".nupkg.metadata",
+ ".signature.p7s",
+ "Icon.png",
+ "LICENSE.TXT",
+ "THIRD-PARTY-NOTICES.TXT",
+ "lib/net46/System.Security.AccessControl.dll",
+ "lib/net461/System.Security.AccessControl.dll",
+ "lib/net461/System.Security.AccessControl.xml",
+ "lib/netstandard1.3/System.Security.AccessControl.dll",
+ "lib/netstandard2.0/System.Security.AccessControl.dll",
+ "lib/netstandard2.0/System.Security.AccessControl.xml",
+ "lib/uap10.0.16299/_._",
+ "ref/net46/System.Security.AccessControl.dll",
+ "ref/net461/System.Security.AccessControl.dll",
+ "ref/net461/System.Security.AccessControl.xml",
+ "ref/netstandard1.3/System.Security.AccessControl.dll",
+ "ref/netstandard1.3/System.Security.AccessControl.xml",
+ "ref/netstandard1.3/de/System.Security.AccessControl.xml",
+ "ref/netstandard1.3/es/System.Security.AccessControl.xml",
+ "ref/netstandard1.3/fr/System.Security.AccessControl.xml",
+ "ref/netstandard1.3/it/System.Security.AccessControl.xml",
+ "ref/netstandard1.3/ja/System.Security.AccessControl.xml",
+ "ref/netstandard1.3/ko/System.Security.AccessControl.xml",
+ "ref/netstandard1.3/ru/System.Security.AccessControl.xml",
+ "ref/netstandard1.3/zh-hans/System.Security.AccessControl.xml",
+ "ref/netstandard1.3/zh-hant/System.Security.AccessControl.xml",
+ "ref/netstandard2.0/System.Security.AccessControl.dll",
+ "ref/netstandard2.0/System.Security.AccessControl.xml",
+ "ref/uap10.0.16299/_._",
+ "runtimes/win/lib/net46/System.Security.AccessControl.dll",
+ "runtimes/win/lib/net461/System.Security.AccessControl.dll",
+ "runtimes/win/lib/net461/System.Security.AccessControl.xml",
+ "runtimes/win/lib/netcoreapp2.0/System.Security.AccessControl.dll",
+ "runtimes/win/lib/netcoreapp2.0/System.Security.AccessControl.xml",
+ "runtimes/win/lib/netstandard1.3/System.Security.AccessControl.dll",
+ "runtimes/win/lib/uap10.0.16299/_._",
+ "system.security.accesscontrol.5.0.0.nupkg.sha512",
+ "system.security.accesscontrol.nuspec",
+ "useSharedDesignerContext.txt",
+ "version.txt"
+ ]
+ },
+ "System.Security.Principal.Windows/5.0.0": {
+ "sha512": "t0MGLukB5WAVU9bO3MGzvlGnyJPgUlcwerXn1kzBRjwLKixT96XV0Uza41W49gVd8zEMFu9vQEFlv0IOrytICA==",
+ "type": "package",
+ "path": "system.security.principal.windows/5.0.0",
+ "files": [
+ ".nupkg.metadata",
+ ".signature.p7s",
+ "Icon.png",
+ "LICENSE.TXT",
+ "THIRD-PARTY-NOTICES.TXT",
+ "lib/net46/System.Security.Principal.Windows.dll",
+ "lib/net461/System.Security.Principal.Windows.dll",
+ "lib/net461/System.Security.Principal.Windows.xml",
+ "lib/netstandard1.3/System.Security.Principal.Windows.dll",
+ "lib/netstandard2.0/System.Security.Principal.Windows.dll",
+ "lib/netstandard2.0/System.Security.Principal.Windows.xml",
+ "lib/uap10.0.16299/_._",
+ "ref/net46/System.Security.Principal.Windows.dll",
+ "ref/net461/System.Security.Principal.Windows.dll",
+ "ref/net461/System.Security.Principal.Windows.xml",
+ "ref/netcoreapp3.0/System.Security.Principal.Windows.dll",
+ "ref/netcoreapp3.0/System.Security.Principal.Windows.xml",
+ "ref/netstandard1.3/System.Security.Principal.Windows.dll",
+ "ref/netstandard1.3/System.Security.Principal.Windows.xml",
+ "ref/netstandard1.3/de/System.Security.Principal.Windows.xml",
+ "ref/netstandard1.3/es/System.Security.Principal.Windows.xml",
+ "ref/netstandard1.3/fr/System.Security.Principal.Windows.xml",
+ "ref/netstandard1.3/it/System.Security.Principal.Windows.xml",
+ "ref/netstandard1.3/ja/System.Security.Principal.Windows.xml",
+ "ref/netstandard1.3/ko/System.Security.Principal.Windows.xml",
+ "ref/netstandard1.3/ru/System.Security.Principal.Windows.xml",
+ "ref/netstandard1.3/zh-hans/System.Security.Principal.Windows.xml",
+ "ref/netstandard1.3/zh-hant/System.Security.Principal.Windows.xml",
+ "ref/netstandard2.0/System.Security.Principal.Windows.dll",
+ "ref/netstandard2.0/System.Security.Principal.Windows.xml",
+ "ref/uap10.0.16299/_._",
+ "runtimes/unix/lib/netcoreapp2.0/System.Security.Principal.Windows.dll",
+ "runtimes/unix/lib/netcoreapp2.0/System.Security.Principal.Windows.xml",
+ "runtimes/unix/lib/netcoreapp2.1/System.Security.Principal.Windows.dll",
+ "runtimes/unix/lib/netcoreapp2.1/System.Security.Principal.Windows.xml",
+ "runtimes/win/lib/net46/System.Security.Principal.Windows.dll",
+ "runtimes/win/lib/net461/System.Security.Principal.Windows.dll",
+ "runtimes/win/lib/net461/System.Security.Principal.Windows.xml",
+ "runtimes/win/lib/netcoreapp2.0/System.Security.Principal.Windows.dll",
+ "runtimes/win/lib/netcoreapp2.0/System.Security.Principal.Windows.xml",
+ "runtimes/win/lib/netcoreapp2.1/System.Security.Principal.Windows.dll",
+ "runtimes/win/lib/netcoreapp2.1/System.Security.Principal.Windows.xml",
+ "runtimes/win/lib/netstandard1.3/System.Security.Principal.Windows.dll",
+ "runtimes/win/lib/uap10.0.16299/_._",
+ "system.security.principal.windows.5.0.0.nupkg.sha512",
+ "system.security.principal.windows.nuspec",
+ "useSharedDesignerContext.txt",
+ "version.txt"
+ ]
+ },
+ "ZstdSharp.Port/0.7.3": {
+ "sha512": "U9Ix4l4cl58Kzz1rJzj5hoVTjmbx1qGMwzAcbv1j/d3NzrFaESIurQyg+ow4mivCgkE3S413y+U9k4WdnEIkRA==",
+ "type": "package",
+ "path": "zstdsharp.port/0.7.3",
+ "files": [
+ ".nupkg.metadata",
+ ".signature.p7s",
+ "lib/net461/ZstdSharp.dll",
+ "lib/net5.0/ZstdSharp.dll",
+ "lib/net6.0/ZstdSharp.dll",
+ "lib/net7.0/ZstdSharp.dll",
+ "lib/netcoreapp3.1/ZstdSharp.dll",
+ "lib/netstandard2.0/ZstdSharp.dll",
+ "lib/netstandard2.1/ZstdSharp.dll",
+ "zstdsharp.port.0.7.3.nupkg.sha512",
+ "zstdsharp.port.nuspec"
+ ]
+ }
+ },
+ "projectFileDependencyGroups": {
+ "net9.0": [
+ "Fantasy-Net.Config >= 2024.1.4",
+ "Fantasy-Net.ConfigTable >= 2024.2.0",
+ "Fantasy-Net.Tools.ExporterConfigTable >= 2024.2.0",
+ "Fantasy-Net.Tools.ExporterNetworkProtocol >= 2024.2.24",
+ "Microsoft.IdentityModel.Tokens >= 8.7.0"
+ ]
+ },
+ "packageFolders": {
+ "C:\\Users\\qq137\\.nuget\\packages\\": {},
+ "C:\\Program Files (x86)\\Microsoft Visual Studio\\Shared\\NuGetPackages": {}
+ },
+ "project": {
+ "version": "1.0.0",
+ "restore": {
+ "projectUniqueName": "D:\\UnityProject\\EintooAR\\GameServer\\Server\\APlugins\\APlugins.csproj",
+ "projectName": "APlugins",
+ "projectPath": "D:\\UnityProject\\EintooAR\\GameServer\\Server\\APlugins\\APlugins.csproj",
+ "packagesPath": "C:\\Users\\qq137\\.nuget\\packages\\",
+ "outputPath": "D:\\UnityProject\\EintooAR\\GameServer\\Server\\APlugins\\obj\\",
+ "projectStyle": "PackageReference",
+ "fallbackFolders": [
+ "C:\\Program Files (x86)\\Microsoft Visual Studio\\Shared\\NuGetPackages"
+ ],
+ "configFilePaths": [
+ "C:\\Users\\qq137\\AppData\\Roaming\\NuGet\\NuGet.Config",
+ "C:\\Program Files (x86)\\NuGet\\Config\\Microsoft.VisualStudio.FallbackLocation.config",
+ "C:\\Program Files (x86)\\NuGet\\Config\\Microsoft.VisualStudio.Offline.config"
+ ],
+ "originalTargetFrameworks": [
+ "net9.0"
+ ],
+ "sources": {
+ "C:\\Program Files (x86)\\Microsoft SDKs\\NuGetPackages\\": {},
+ "https://api.nuget.org/v3/index.json": {}
+ },
+ "frameworks": {
+ "net9.0": {
+ "targetAlias": "net9.0",
+ "projectReferences": {}
+ }
+ },
+ "warningProperties": {
+ "warnAsError": [
+ "NU1605"
+ ]
+ },
+ "restoreAuditProperties": {
+ "enableAudit": "true",
+ "auditLevel": "low",
+ "auditMode": "direct"
+ },
+ "SdkAnalysisLevel": "9.0.200"
+ },
+ "frameworks": {
+ "net9.0": {
+ "targetAlias": "net9.0",
+ "dependencies": {
+ "Fantasy-Net.Config": {
+ "target": "Package",
+ "version": "[2024.1.4, )"
+ },
+ "Fantasy-Net.ConfigTable": {
+ "target": "Package",
+ "version": "[2024.2.0, )"
+ },
+ "Fantasy-Net.Tools.ExporterConfigTable": {
+ "target": "Package",
+ "version": "[2024.2.0, )"
+ },
+ "Fantasy-Net.Tools.ExporterNetworkProtocol": {
+ "target": "Package",
+ "version": "[2024.2.24, )"
+ },
+ "Microsoft.IdentityModel.Tokens": {
+ "target": "Package",
+ "version": "[8.7.0, )"
+ }
+ },
+ "imports": [
+ "net461",
+ "net462",
+ "net47",
+ "net471",
+ "net472",
+ "net48",
+ "net481"
+ ],
+ "assetTargetFallback": true,
+ "warn": true,
+ "frameworkReferences": {
+ "Microsoft.NETCore.App": {
+ "privateAssets": "all"
+ }
+ },
+ "runtimeIdentifierGraphPath": "C:\\Program Files\\dotnet\\sdk\\9.0.203/PortableRuntimeIdentifierGraph.json"
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/GameServer/Server/APlugins/obj/project.nuget.cache b/GameServer/Server/APlugins/obj/project.nuget.cache
new file mode 100644
index 00000000..761610ae
--- /dev/null
+++ b/GameServer/Server/APlugins/obj/project.nuget.cache
@@ -0,0 +1,37 @@
+{
+ "version": 2,
+ "dgSpecHash": "W5My88bd6G0=",
+ "success": true,
+ "projectFilePath": "D:\\UnityProject\\EintooAR\\GameServer\\Server\\APlugins\\APlugins.csproj",
+ "expectedPackageFiles": [
+ "C:\\Users\\qq137\\.nuget\\packages\\commandlineparser\\2.9.1\\commandlineparser.2.9.1.nupkg.sha512",
+ "C:\\Users\\qq137\\.nuget\\packages\\dnsclient\\1.6.1\\dnsclient.1.6.1.nupkg.sha512",
+ "C:\\Users\\qq137\\.nuget\\packages\\fantasy-net\\2024.2.22\\fantasy-net.2024.2.22.nupkg.sha512",
+ "C:\\Users\\qq137\\.nuget\\packages\\fantasy-net.config\\2024.1.4\\fantasy-net.config.2024.1.4.nupkg.sha512",
+ "C:\\Users\\qq137\\.nuget\\packages\\fantasy-net.configtable\\2024.2.0\\fantasy-net.configtable.2024.2.0.nupkg.sha512",
+ "C:\\Users\\qq137\\.nuget\\packages\\fantasy-net.tools.exporterconfigtable\\2024.2.0\\fantasy-net.tools.exporterconfigtable.2024.2.0.nupkg.sha512",
+ "C:\\Users\\qq137\\.nuget\\packages\\fantasy-net.tools.exporternetworkprotocol\\2024.2.24\\fantasy-net.tools.exporternetworkprotocol.2024.2.24.nupkg.sha512",
+ "C:\\Users\\qq137\\.nuget\\packages\\microsoft.extensions.dependencyinjection.abstractions\\8.0.2\\microsoft.extensions.dependencyinjection.abstractions.8.0.2.nupkg.sha512",
+ "C:\\Users\\qq137\\.nuget\\packages\\microsoft.extensions.logging.abstractions\\8.0.2\\microsoft.extensions.logging.abstractions.8.0.2.nupkg.sha512",
+ "C:\\Users\\qq137\\.nuget\\packages\\microsoft.identitymodel.abstractions\\8.7.0\\microsoft.identitymodel.abstractions.8.7.0.nupkg.sha512",
+ "C:\\Users\\qq137\\.nuget\\packages\\microsoft.identitymodel.logging\\8.7.0\\microsoft.identitymodel.logging.8.7.0.nupkg.sha512",
+ "C:\\Users\\qq137\\.nuget\\packages\\microsoft.identitymodel.tokens\\8.7.0\\microsoft.identitymodel.tokens.8.7.0.nupkg.sha512",
+ "C:\\Users\\qq137\\.nuget\\packages\\microsoft.netcore.platforms\\5.0.0\\microsoft.netcore.platforms.5.0.0.nupkg.sha512",
+ "C:\\Users\\qq137\\.nuget\\packages\\microsoft.win32.registry\\5.0.0\\microsoft.win32.registry.5.0.0.nupkg.sha512",
+ "C:\\Users\\qq137\\.nuget\\packages\\mongodb.bson\\3.1.0\\mongodb.bson.3.1.0.nupkg.sha512",
+ "C:\\Users\\qq137\\.nuget\\packages\\mongodb.driver\\3.1.0\\mongodb.driver.3.1.0.nupkg.sha512",
+ "C:\\Users\\qq137\\.nuget\\packages\\newtonsoft.json\\13.0.3\\newtonsoft.json.13.0.3.nupkg.sha512",
+ "C:\\Users\\qq137\\.nuget\\packages\\protobuf-net\\3.2.45\\protobuf-net.3.2.45.nupkg.sha512",
+ "C:\\Users\\qq137\\.nuget\\packages\\protobuf-net.core\\3.2.45\\protobuf-net.core.3.2.45.nupkg.sha512",
+ "C:\\Users\\qq137\\.nuget\\packages\\sharpcompress\\0.30.1\\sharpcompress.0.30.1.nupkg.sha512",
+ "C:\\Users\\qq137\\.nuget\\packages\\snappier\\1.0.0\\snappier.1.0.0.nupkg.sha512",
+ "C:\\Users\\qq137\\.nuget\\packages\\system.buffers\\4.5.1\\system.buffers.4.5.1.nupkg.sha512",
+ "C:\\Users\\qq137\\.nuget\\packages\\system.collections.immutable\\7.0.0\\system.collections.immutable.7.0.0.nupkg.sha512",
+ "C:\\Users\\qq137\\.nuget\\packages\\system.memory\\4.5.5\\system.memory.4.5.5.nupkg.sha512",
+ "C:\\Users\\qq137\\.nuget\\packages\\system.runtime.compilerservices.unsafe\\5.0.0\\system.runtime.compilerservices.unsafe.5.0.0.nupkg.sha512",
+ "C:\\Users\\qq137\\.nuget\\packages\\system.security.accesscontrol\\5.0.0\\system.security.accesscontrol.5.0.0.nupkg.sha512",
+ "C:\\Users\\qq137\\.nuget\\packages\\system.security.principal.windows\\5.0.0\\system.security.principal.windows.5.0.0.nupkg.sha512",
+ "C:\\Users\\qq137\\.nuget\\packages\\zstdsharp.port\\0.7.3\\zstdsharp.port.0.7.3.nupkg.sha512"
+ ],
+ "logs": []
+}
\ No newline at end of file
diff --git a/GameServer/Server/APlugins/obj/project.packagespec.json b/GameServer/Server/APlugins/obj/project.packagespec.json
new file mode 100644
index 00000000..b232294a
--- /dev/null
+++ b/GameServer/Server/APlugins/obj/project.packagespec.json
@@ -0,0 +1 @@
+"restore":{"projectUniqueName":"D:\\UnityProject\\EintooAR\\GameServer\\Server\\APlugins\\APlugins.csproj","projectName":"APlugins","projectPath":"D:\\UnityProject\\EintooAR\\GameServer\\Server\\APlugins\\APlugins.csproj","outputPath":"D:\\UnityProject\\EintooAR\\GameServer\\Server\\APlugins\\obj\\","projectStyle":"PackageReference","fallbackFolders":["C:\\Program Files (x86)\\Microsoft Visual Studio\\Shared\\NuGetPackages"],"originalTargetFrameworks":["net9.0"],"sources":{"C:\\Program Files (x86)\\Microsoft SDKs\\NuGetPackages\\":{},"https://api.nuget.org/v3/index.json":{}},"frameworks":{"net9.0":{"targetAlias":"net9.0","projectReferences":{}}},"warningProperties":{"warnAsError":["NU1605"]},"restoreAuditProperties":{"enableAudit":"true","auditLevel":"low","auditMode":"direct"},"SdkAnalysisLevel":"9.0.200"}"frameworks":{"net9.0":{"targetAlias":"net9.0","dependencies":{"Fantasy-Net.Config":{"target":"Package","version":"[2024.1.4, )"},"Fantasy-Net.ConfigTable":{"target":"Package","version":"[2024.2.0, )"},"Fantasy-Net.Tools.ExporterConfigTable":{"target":"Package","version":"[2024.2.0, )"},"Fantasy-Net.Tools.ExporterNetworkProtocol":{"target":"Package","version":"[2024.2.24, )"},"Microsoft.IdentityModel.Tokens":{"target":"Package","version":"[8.7.0, )"}},"imports":["net461","net462","net47","net471","net472","net48","net481"],"assetTargetFallback":true,"warn":true,"frameworkReferences":{"Microsoft.NETCore.App":{"privateAssets":"all"}},"runtimeIdentifierGraphPath":"C:\\Program Files\\dotnet\\sdk\\9.0.203/PortableRuntimeIdentifierGraph.json"}}
\ No newline at end of file
diff --git a/GameServer/Server/APlugins/obj/rider.project.model.nuget.info b/GameServer/Server/APlugins/obj/rider.project.model.nuget.info
new file mode 100644
index 00000000..9b22325a
--- /dev/null
+++ b/GameServer/Server/APlugins/obj/rider.project.model.nuget.info
@@ -0,0 +1 @@
+17446243488696810
\ No newline at end of file
diff --git a/GameServer/Server/APlugins/obj/rider.project.restore.info b/GameServer/Server/APlugins/obj/rider.project.restore.info
new file mode 100644
index 00000000..9b22325a
--- /dev/null
+++ b/GameServer/Server/APlugins/obj/rider.project.restore.info
@@ -0,0 +1 @@
+17446243488696810
\ No newline at end of file
diff --git a/GameServer/Server/Entity/AssemblyHelper.cs b/GameServer/Server/Entity/AssemblyHelper.cs
new file mode 100644
index 00000000..cac01c5d
--- /dev/null
+++ b/GameServer/Server/Entity/AssemblyHelper.cs
@@ -0,0 +1,41 @@
+using System.Reflection;
+using System.Runtime.Loader;
+
+namespace Fantasy
+{
+ public static class AssemblyHelper
+ {
+ private const string HotfixDll = "Hotfix";
+ private static AssemblyLoadContext? _assemblyLoadContext = null;
+
+ public static System.Reflection.Assembly[] Assemblies
+ {
+ get
+ {
+ var assemblies = new System.Reflection.Assembly[2];
+ assemblies[0] = LoadEntityAssembly();
+ assemblies[1] = LoadHotfixAssembly();
+ return assemblies;
+ }
+ }
+
+ private static System.Reflection.Assembly LoadEntityAssembly()
+ {
+ return typeof(AssemblyHelper).Assembly;
+ }
+
+ private static System.Reflection.Assembly LoadHotfixAssembly()
+ {
+ if (_assemblyLoadContext != null)
+ {
+ _assemblyLoadContext.Unload();
+ System.GC.Collect();
+ }
+
+ _assemblyLoadContext = new AssemblyLoadContext(HotfixDll, true);
+ var dllBytes = File.ReadAllBytes(Path.Combine(Environment.CurrentDirectory, $"{HotfixDll}.dll"));
+ var pdbBytes = File.ReadAllBytes(Path.Combine(Environment.CurrentDirectory, $"{HotfixDll}.pdb"));
+ return _assemblyLoadContext.LoadFromStream(new MemoryStream(dllBytes), new MemoryStream(pdbBytes));
+ }
+ }
+}
\ No newline at end of file
diff --git a/GameServer/Server/Entity/Common/GameErrorCode.cs b/GameServer/Server/Entity/Common/GameErrorCode.cs
new file mode 100644
index 00000000..dc6ee5d5
--- /dev/null
+++ b/GameServer/Server/Entity/Common/GameErrorCode.cs
@@ -0,0 +1,34 @@
+using Fantasy.Async;
+
+public static class GameErrorCode
+{
+ public static uint Failed = 0;
+ public static uint Success = 1; // 成功
+ public static uint UsernameOrPasswordCannotBeEmpty = 2; // 用户名不能为空
+ public static uint PasswordIncorrect = 3; // 密码不正确
+ public static uint UserAlreadyExists = 4; // 用户已存在
+ public static uint UserNotFound = 5; // 用户不存在
+ public static uint InvalidToken = 6;
+ public static uint UserNotFoundOrPasswordIsNotCorrect = 7; //用户名不存在 或者 密码 不正确
+ public static uint UserAlreadyLogin = 8; // 用户已登录
+
+ // 无效的身份验证令牌
+ public static uint AccessDenied = 10; // 访问被拒绝
+ public static uint ServerError = 11; // 服务器内部错误
+ public static uint InvalidInput = 12; // 输入不合法
+ public static uint TooManyRequests = 13; // 请求过多(防止刷接口)
+ public static uint UnauthorizedServer = 14; // 用户不属于该鉴权服务器
+
+
+ // Token验证状态码
+ public static uint GateTokenValidSuccess = 20; // Gate Token有效
+ public static uint GateTokenExpired = 21; //Gate Token已过期
+ public static uint GateTokenInvalidSignature = 22; //Gate Token签名无效
+ public static uint GateTokenGeneralError = 23; // Gate Token验证一般错误
+ public static uint GateTokenValidFailed = 24; // Gate Token校验失败 无效
+ public static uint GateLoginSuccess = 25;
+ public static uint GateRepeatedLogin = 26; //多次重复登录请求
+
+ public static uint GateUpdateGameNameSuccess = 27; // 修改用户名称成功
+ public static uint GateUpdateGameNameFailed = 28; // 修改用户名称失败
+}
\ No newline at end of file
diff --git a/GameServer/Server/Entity/Entity.csproj b/GameServer/Server/Entity/Entity.csproj
new file mode 100644
index 00000000..8530f36e
--- /dev/null
+++ b/GameServer/Server/Entity/Entity.csproj
@@ -0,0 +1,19 @@
+
+
+
+ net9.0
+ enable
+ enable
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/GameServer/Server/Entity/Enum/Commom/ELockType.cs b/GameServer/Server/Entity/Enum/Commom/ELockType.cs
new file mode 100644
index 00000000..f487e9d8
--- /dev/null
+++ b/GameServer/Server/Entity/Enum/Commom/ELockType.cs
@@ -0,0 +1,10 @@
+
+
+public enum ELockType
+{
+ AuthenticationRegister = 1 ,
+ AuthenticationLogin = 2,
+
+ GateGetGameAccount = 3,
+ GateLoadGameAccount = 5,
+}
\ No newline at end of file
diff --git a/GameServer/Server/Entity/Generate/ConfigTable/Entity/UnitConfig.cs b/GameServer/Server/Entity/Generate/ConfigTable/Entity/UnitConfig.cs
new file mode 100644
index 00000000..c0f11d93
--- /dev/null
+++ b/GameServer/Server/Entity/Generate/ConfigTable/Entity/UnitConfig.cs
@@ -0,0 +1,99 @@
+using System;
+using ProtoBuf;
+using Fantasy;
+using System.Linq;
+using System.Reflection;
+using System.Collections.Generic;
+using System.Collections.Concurrent;
+using Fantasy.ConfigTable;
+using Fantasy.Serialize;
+// ReSharper disable CollectionNeverUpdated.Global
+// ReSharper disable UnusedAutoPropertyAccessor.Global
+#pragma warning disable CS1591 // Missing XML comment for publicly visible type or member
+#pragma warning disable CS0169
+#pragma warning disable CS8618
+#pragma warning disable CS8625
+#pragma warning disable CS8603
+
+namespace Fantasy
+{
+ [ProtoContract]
+ public sealed partial class UnitConfigData : ASerialize, IConfigTable, IProto
+ {
+ [ProtoMember(1)]
+ public List List { get; set; } = new List();
+#if FANTASY_NET
+ [ProtoIgnore]
+ private readonly ConcurrentDictionary _configs = new ConcurrentDictionary();
+#else
+ [ProtoIgnore]
+ private readonly Dictionary _configs = new Dictionary();
+#endif
+ private static UnitConfigData _instance = null;
+
+ public static UnitConfigData Instance
+ {
+ get { return _instance ??= ConfigTableHelper.Load(); }
+ private set => _instance = value;
+ }
+
+ public UnitConfig Get(uint id, bool check = true)
+ {
+ if (_configs.ContainsKey(id))
+ {
+ return _configs[id];
+ }
+
+ if (check)
+ {
+ throw new Exception($"UnitConfig not find {id} Id");
+ }
+
+ return null;
+ }
+ public bool TryGet(uint id, out UnitConfig config)
+ {
+ config = null;
+
+ if (!_configs.ContainsKey(id))
+ {
+ return false;
+ }
+
+ config = _configs[id];
+ return true;
+ }
+ public override void AfterDeserialization()
+ {
+ foreach (var config in List)
+ {
+#if FANTASY_NET
+ _configs.TryAdd(config.Id, config);
+#else
+ _configs.Add(config.Id, config);
+#endif
+ config.AfterDeserialization();
+ }
+
+ EndInit();
+ }
+
+ public override void Dispose()
+ {
+ Instance = null;
+ }
+ }
+
+ [ProtoContract]
+ public sealed partial class UnitConfig : ASerialize, IProto
+ {
+ [ProtoMember(1)]
+ public uint Id { get; set; } // Id
+ [ProtoMember(2)]
+ public string Name { get; set; } // 名称
+ [ProtoMember(3)]
+ public string Model { get; set; } // 数据库类型
+ [ProtoMember(4)]
+ public StringDictionaryConfig Dic { get; set; } // 字典类型
+ }
+}
\ No newline at end of file
diff --git a/GameServer/Server/Entity/Generate/CustomExport/SceneType.cs b/GameServer/Server/Entity/Generate/CustomExport/SceneType.cs
new file mode 100644
index 00000000..de34ed92
--- /dev/null
+++ b/GameServer/Server/Entity/Generate/CustomExport/SceneType.cs
@@ -0,0 +1,27 @@
+namespace Fantasy
+{
+ // 生成器自动生成,请不要手动编辑。
+ public static class SceneType
+ {
+ public const int Authentication = 1;
+ public const int Addressable = 2;
+ public const int Gate = 3;
+ public const int Map = 4;
+ public const int CopyDispatcher = 5;
+ public const int CopyManager = 6;
+ public const int Copy = 7;
+ public const int Chat = 8;
+
+ public static readonly Dictionary SceneTypeDic = new Dictionary()
+ {
+ { "Authentication", 1 },
+ { "Addressable", 2 },
+ { "Gate", 3 },
+ { "Map", 4 },
+ { "CopyDispatcher", 5 },
+ { "CopyManager", 6 },
+ { "Copy", 7 },
+ { "Chat", 8 },
+ };
+ }
+}
diff --git a/GameServer/Server/Entity/Generate/NetworkProtocol/InnerMessage.cs b/GameServer/Server/Entity/Generate/NetworkProtocol/InnerMessage.cs
new file mode 100644
index 00000000..5214065c
--- /dev/null
+++ b/GameServer/Server/Entity/Generate/NetworkProtocol/InnerMessage.cs
@@ -0,0 +1,408 @@
+using ProtoBuf;
+
+using System.Collections.Generic;
+using MongoDB.Bson.Serialization.Attributes;
+using Fantasy;
+using Fantasy.Network.Interface;
+using Fantasy.Serialize;
+// ReSharper disable InconsistentNaming
+// ReSharper disable RedundantUsingDirective
+// ReSharper disable RedundantOverriddenMember
+// ReSharper disable PartialTypeWithSinglePart
+// ReSharper disable UnusedAutoPropertyAccessor.Global
+// ReSharper disable MemberCanBePrivate.Global
+// ReSharper disable CheckNamespace
+#pragma warning disable CS8625 // Cannot convert null literal to non-nullable reference type.
+#pragma warning disable CS8618
+
+namespace Fantasy
+{
+ [ProtoContract]
+ public partial class G2Chat_LoginRequest : AMessage, IRouteRequest, IProto
+ {
+ public static G2Chat_LoginRequest Create(Scene scene)
+ {
+ return scene.MessagePoolComponent.Rent();
+ }
+ public override void Dispose()
+ {
+ GameName = default;
+ AccountId = default;
+ GateRoutedId = default;
+#if FANTASY_NET || FANTASY_UNITY
+ GetScene().MessagePoolComponent.Return(this);
+#endif
+ }
+ [ProtoIgnore]
+ public Chat2G_LoginResponse ResponseType { get; set; }
+ public uint OpCode() { return InnerOpcode.G2Chat_LoginRequest; }
+ [ProtoMember(1)]
+ public string GameName { get; set; }
+ [ProtoMember(2)]
+ public long AccountId { get; set; }
+ [ProtoMember(3)]
+ public long GateRoutedId { get; set; }
+ }
+ [ProtoContract]
+ public partial class Chat2G_LoginResponse : AMessage, IRouteResponse, IProto
+ {
+ public static Chat2G_LoginResponse Create(Scene scene)
+ {
+ return scene.MessagePoolComponent.Rent();
+ }
+ public override void Dispose()
+ {
+ ErrorCode = default;
+ ChatRouteId = default;
+#if FANTASY_NET || FANTASY_UNITY
+ GetScene().MessagePoolComponent.Return(this);
+#endif
+ }
+ public uint OpCode() { return InnerOpcode.Chat2G_LoginResponse; }
+ [ProtoMember(1)]
+ public long ChatRouteId { get; set; }
+ [ProtoMember(2)]
+ public uint ErrorCode { get; set; }
+ }
+ [ProtoContract]
+ public partial class G2Chat_OfflineRequest : AMessage, IRouteRequest, IProto
+ {
+ public static G2Chat_OfflineRequest Create(Scene scene)
+ {
+ return scene.MessagePoolComponent.Rent();
+ }
+ public override void Dispose()
+ {
+#if FANTASY_NET || FANTASY_UNITY
+ GetScene().MessagePoolComponent.Return(this);
+#endif
+ }
+ [ProtoIgnore]
+ public Chat2G_OfflineResponse ResponseType { get; set; }
+ public uint OpCode() { return InnerOpcode.G2Chat_OfflineRequest; }
+ }
+ [ProtoContract]
+ public partial class Chat2G_OfflineResponse : AMessage, IRouteResponse, IProto
+ {
+ public static Chat2G_OfflineResponse Create(Scene scene)
+ {
+ return scene.MessagePoolComponent.Rent();
+ }
+ public override void Dispose()
+ {
+ ErrorCode = default;
+#if FANTASY_NET || FANTASY_UNITY
+ GetScene().MessagePoolComponent.Return(this);
+#endif
+ }
+ public uint OpCode() { return InnerOpcode.Chat2G_OfflineResponse; }
+ [ProtoMember(1)]
+ public uint ErrorCode { get; set; }
+ }
+ [ProtoContract]
+ public partial class Chat2G_BoardMessage : AMessage, IRouteMessage, IProto
+ {
+ public static Chat2G_BoardMessage Create(Scene scene)
+ {
+ return scene.MessagePoolComponent.Rent();
+ }
+ public override void Dispose()
+ {
+ Message = default;
+#if FANTASY_NET || FANTASY_UNITY
+ GetScene().MessagePoolComponent.Return(this);
+#endif
+ }
+ public uint OpCode() { return InnerOpcode.Chat2G_BoardMessage; }
+ [ProtoMember(1)]
+ public string Message { get; set; }
+ }
+ [ProtoContract]
+ public partial class G2A_TestMessage : AMessage, IRouteMessage, IProto
+ {
+ public static G2A_TestMessage Create(Scene scene)
+ {
+ return scene.MessagePoolComponent.Rent();
+ }
+ public override void Dispose()
+ {
+ Tag = default;
+#if FANTASY_NET || FANTASY_UNITY
+ GetScene().MessagePoolComponent.Return(this);
+#endif
+ }
+ public uint OpCode() { return InnerOpcode.G2A_TestMessage; }
+ [ProtoMember(1)]
+ public string Tag { get; set; }
+ }
+ [ProtoContract]
+ public partial class G2A_TestRequest : AMessage, IRouteRequest, IProto
+ {
+ public static G2A_TestRequest Create(Scene scene)
+ {
+ return scene.MessagePoolComponent.Rent();
+ }
+ public override void Dispose()
+ {
+#if FANTASY_NET || FANTASY_UNITY
+ GetScene().MessagePoolComponent.Return(this);
+#endif
+ }
+ [ProtoIgnore]
+ public G2A_TestResponse ResponseType { get; set; }
+ public uint OpCode() { return InnerOpcode.G2A_TestRequest; }
+ }
+ [ProtoContract]
+ public partial class G2A_TestResponse : AMessage, IRouteResponse, IProto
+ {
+ public static G2A_TestResponse Create(Scene scene)
+ {
+ return scene.MessagePoolComponent.Rent();
+ }
+ public override void Dispose()
+ {
+ ErrorCode = default;
+#if FANTASY_NET || FANTASY_UNITY
+ GetScene().MessagePoolComponent.Return(this);
+#endif
+ }
+ public uint OpCode() { return InnerOpcode.G2A_TestResponse; }
+ [ProtoMember(1)]
+ public uint ErrorCode { get; set; }
+ }
+ [ProtoContract]
+ public partial class G2M_RequestAddressableId : AMessage, IRouteRequest, IProto
+ {
+ public static G2M_RequestAddressableId Create(Scene scene)
+ {
+ return scene.MessagePoolComponent.Rent();
+ }
+ public override void Dispose()
+ {
+#if FANTASY_NET || FANTASY_UNITY
+ GetScene().MessagePoolComponent.Return(this);
+#endif
+ }
+ [ProtoIgnore]
+ public M2G_ResponseAddressableId ResponseType { get; set; }
+ public uint OpCode() { return InnerOpcode.G2M_RequestAddressableId; }
+ }
+ [ProtoContract]
+ public partial class M2G_ResponseAddressableId : AMessage, IRouteResponse, IProto
+ {
+ public static M2G_ResponseAddressableId Create(Scene scene)
+ {
+ return scene.MessagePoolComponent.Rent();
+ }
+ public override void Dispose()
+ {
+ ErrorCode = default;
+ AddressableId = default;
+#if FANTASY_NET || FANTASY_UNITY
+ GetScene().MessagePoolComponent.Return(this);
+#endif
+ }
+ public uint OpCode() { return InnerOpcode.M2G_ResponseAddressableId; }
+ [ProtoMember(1)]
+ public long AddressableId { get; set; }
+ [ProtoMember(2)]
+ public uint ErrorCode { get; set; }
+ }
+ ///
+ /// 通知Chat服务器创建一个RouteId
+ ///
+ [ProtoContract]
+ public partial class G2Chat_CreateRouteRequest : AMessage, IRouteRequest, IProto
+ {
+ public static G2Chat_CreateRouteRequest Create(Scene scene)
+ {
+ return scene.MessagePoolComponent.Rent();
+ }
+ public override void Dispose()
+ {
+ GateRouteId = default;
+#if FANTASY_NET || FANTASY_UNITY
+ GetScene().MessagePoolComponent.Return(this);
+#endif
+ }
+ [ProtoIgnore]
+ public Chat2G_CreateRouteResponse ResponseType { get; set; }
+ public uint OpCode() { return InnerOpcode.G2Chat_CreateRouteRequest; }
+ [ProtoMember(1)]
+ public long GateRouteId { get; set; }
+ }
+ [ProtoContract]
+ public partial class Chat2G_CreateRouteResponse : AMessage, IRouteResponse, IProto
+ {
+ public static Chat2G_CreateRouteResponse Create(Scene scene)
+ {
+ return scene.MessagePoolComponent.Rent();
+ }
+ public override void Dispose()
+ {
+ ErrorCode = default;
+ ChatRouteId = default;
+#if FANTASY_NET || FANTASY_UNITY
+ GetScene().MessagePoolComponent.Return(this);
+#endif
+ }
+ public uint OpCode() { return InnerOpcode.Chat2G_CreateRouteResponse; }
+ [ProtoMember(1)]
+ public long ChatRouteId { get; set; }
+ [ProtoMember(2)]
+ public uint ErrorCode { get; set; }
+ }
+ ///
+ /// Map给另外一个Map发送Unit数据
+ ///
+ public partial class M2M_SendUnitRequest : AMessage, IRouteRequest
+ {
+ public static M2M_SendUnitRequest Create(Scene scene)
+ {
+ return scene.MessagePoolComponent.Rent();
+ }
+ public override void Dispose()
+ {
+#if FANTASY_NET || FANTASY_UNITY
+ GetScene().MessagePoolComponent.Return(this);
+#endif
+ }
+ [BsonIgnore]
+ public M2M_SendUnitResponse ResponseType { get; set; }
+ public uint OpCode() { return InnerOpcode.M2M_SendUnitRequest; }
+ }
+ public partial class M2M_SendUnitResponse : AMessage, IRouteResponse
+ {
+ public static M2M_SendUnitResponse Create(Scene scene)
+ {
+ return scene.MessagePoolComponent.Rent();
+ }
+ public override void Dispose()
+ {
+ ErrorCode = default;
+#if FANTASY_NET || FANTASY_UNITY
+ GetScene().MessagePoolComponent.Return(this);
+#endif
+ }
+ public uint OpCode() { return InnerOpcode.M2M_SendUnitResponse; }
+ public uint ErrorCode { get; set; }
+ }
+ ///
+ /// Gate发送Addressable消息给MAP
+ ///
+ [ProtoContract]
+ public partial class G2M_SendAddressableMessage : AMessage, IAddressableRouteMessage, IProto
+ {
+ public static G2M_SendAddressableMessage Create(Scene scene)
+ {
+ return scene.MessagePoolComponent.Rent();
+ }
+ public override void Dispose()
+ {
+ Tag = default;
+#if FANTASY_NET || FANTASY_UNITY
+ GetScene().MessagePoolComponent.Return(this);
+#endif
+ }
+ public uint OpCode() { return InnerOpcode.G2M_SendAddressableMessage; }
+ [ProtoMember(1)]
+ public string Tag { get; set; }
+ }
+ [ProtoContract]
+ public partial class G2M_CreateSubSceneRequest : AMessage, IRouteRequest, IProto
+ {
+ public static G2M_CreateSubSceneRequest Create(Scene scene)
+ {
+ return scene.MessagePoolComponent.Rent();
+ }
+ public override void Dispose()
+ {
+#if FANTASY_NET || FANTASY_UNITY
+ GetScene().MessagePoolComponent.Return(this);
+#endif
+ }
+ [ProtoIgnore]
+ public M2G_CreateSubSceneResponse ResponseType { get; set; }
+ public uint OpCode() { return InnerOpcode.G2M_CreateSubSceneRequest; }
+ }
+ [ProtoContract]
+ public partial class M2G_CreateSubSceneResponse : AMessage, IRouteResponse, IProto
+ {
+ public static M2G_CreateSubSceneResponse Create(Scene scene)
+ {
+ return scene.MessagePoolComponent.Rent();
+ }
+ public override void Dispose()
+ {
+ ErrorCode = default;
+ SubSceneRouteId = default;
+#if FANTASY_NET || FANTASY_UNITY
+ GetScene().MessagePoolComponent.Return(this);
+#endif
+ }
+ public uint OpCode() { return InnerOpcode.M2G_CreateSubSceneResponse; }
+ [ProtoMember(1)]
+ public long SubSceneRouteId { get; set; }
+ [ProtoMember(2)]
+ public uint ErrorCode { get; set; }
+ }
+ [ProtoContract]
+ public partial class G2SubScene_SentMessage : AMessage, IRouteMessage, IProto
+ {
+ public static G2SubScene_SentMessage Create(Scene scene)
+ {
+ return scene.MessagePoolComponent.Rent();
+ }
+ public override void Dispose()
+ {
+ Tag = default;
+#if FANTASY_NET || FANTASY_UNITY
+ GetScene().MessagePoolComponent.Return(this);
+#endif
+ }
+ public uint OpCode() { return InnerOpcode.G2SubScene_SentMessage; }
+ [ProtoMember(1)]
+ public string Tag { get; set; }
+ }
+ ///
+ /// Gate通知SubScene创建一个Addressable消息
+ ///
+ [ProtoContract]
+ public partial class G2SubScene_AddressableIdRequest : AMessage, IRouteRequest, IProto
+ {
+ public static G2SubScene_AddressableIdRequest Create(Scene scene)
+ {
+ return scene.MessagePoolComponent.Rent();
+ }
+ public override void Dispose()
+ {
+#if FANTASY_NET || FANTASY_UNITY
+ GetScene().MessagePoolComponent.Return(this);
+#endif
+ }
+ [ProtoIgnore]
+ public SubScene2G_AddressableIdResponse ResponseType { get; set; }
+ public uint OpCode() { return InnerOpcode.G2SubScene_AddressableIdRequest; }
+ }
+ [ProtoContract]
+ public partial class SubScene2G_AddressableIdResponse : AMessage, IRouteResponse, IProto
+ {
+ public static SubScene2G_AddressableIdResponse Create(Scene scene)
+ {
+ return scene.MessagePoolComponent.Rent();
+ }
+ public override void Dispose()
+ {
+ ErrorCode = default;
+ AddressableId = default;
+#if FANTASY_NET || FANTASY_UNITY
+ GetScene().MessagePoolComponent.Return(this);
+#endif
+ }
+ public uint OpCode() { return InnerOpcode.SubScene2G_AddressableIdResponse; }
+ [ProtoMember(1)]
+ public long AddressableId { get; set; }
+ [ProtoMember(2)]
+ public uint ErrorCode { get; set; }
+ }
+}
diff --git a/GameServer/Server/Entity/Generate/NetworkProtocol/InnerOpcode.cs b/GameServer/Server/Entity/Generate/NetworkProtocol/InnerOpcode.cs
new file mode 100644
index 00000000..1abaea6a
--- /dev/null
+++ b/GameServer/Server/Entity/Generate/NetworkProtocol/InnerOpcode.cs
@@ -0,0 +1,26 @@
+namespace Fantasy
+{
+ public static partial class InnerOpcode
+ {
+ public const uint G2Chat_LoginRequest = 1073751825;
+ public const uint Chat2G_LoginResponse = 1207969553;
+ public const uint G2Chat_OfflineRequest = 1073751826;
+ public const uint Chat2G_OfflineResponse = 1207969554;
+ public const uint Chat2G_BoardMessage = 939534097;
+ public const uint G2A_TestMessage = 939534098;
+ public const uint G2A_TestRequest = 1073751827;
+ public const uint G2A_TestResponse = 1207969555;
+ public const uint G2M_RequestAddressableId = 1073751828;
+ public const uint M2G_ResponseAddressableId = 1207969556;
+ public const uint G2Chat_CreateRouteRequest = 1073751829;
+ public const uint Chat2G_CreateRouteResponse = 1207969557;
+ public const uint M2M_SendUnitRequest = 1082140438;
+ public const uint M2M_SendUnitResponse = 1216358166;
+ public const uint G2M_SendAddressableMessage = 1744840465;
+ public const uint G2M_CreateSubSceneRequest = 1073751831;
+ public const uint M2G_CreateSubSceneResponse = 1207969559;
+ public const uint G2SubScene_SentMessage = 939534099;
+ public const uint G2SubScene_AddressableIdRequest = 1073751832;
+ public const uint SubScene2G_AddressableIdResponse = 1207969560;
+ }
+}
diff --git a/GameServer/Server/Entity/Generate/NetworkProtocol/OuterMessage.cs b/GameServer/Server/Entity/Generate/NetworkProtocol/OuterMessage.cs
new file mode 100644
index 00000000..b1533ed6
--- /dev/null
+++ b/GameServer/Server/Entity/Generate/NetworkProtocol/OuterMessage.cs
@@ -0,0 +1,912 @@
+using ProtoBuf;
+
+using System.Collections.Generic;
+using MongoDB.Bson.Serialization.Attributes;
+using Fantasy;
+using Fantasy.Network.Interface;
+using Fantasy.Serialize;
+// ReSharper disable InconsistentNaming
+// ReSharper disable RedundantUsingDirective
+// ReSharper disable RedundantOverriddenMember
+// ReSharper disable PartialTypeWithSinglePart
+// ReSharper disable UnusedAutoPropertyAccessor.Global
+// ReSharper disable MemberCanBePrivate.Global
+// ReSharper disable CheckNamespace
+#pragma warning disable CS8625 // Cannot convert null literal to non-nullable reference type.
+#pragma warning disable CS8618
+
+namespace Fantasy
+{
+ [ProtoContract]
+ public partial class C2A_RegisterRequest : AMessage, IRequest, IProto
+ {
+ public static C2A_RegisterRequest Create(Scene scene)
+ {
+ return scene.MessagePoolComponent.Rent();
+ }
+ public override void Dispose()
+ {
+ Username = default;
+ Password = default;
+ Source = default;
+#if FANTASY_NET || FANTASY_UNITY
+ GetScene().MessagePoolComponent.Return(this);
+#endif
+ }
+ [ProtoIgnore]
+ public A2C_RegisterResponse ResponseType { get; set; }
+ public uint OpCode() { return OuterOpcode.C2A_RegisterRequest; }
+ [ProtoMember(1)]
+ public string Username { get; set; }
+ [ProtoMember(2)]
+ public string Password { get; set; }
+ [ProtoMember(3)]
+ public string Source { get; set; }
+ }
+ [ProtoContract]
+ public partial class A2C_RegisterResponse : AMessage, IResponse, IProto
+ {
+ public static A2C_RegisterResponse Create(Scene scene)
+ {
+ return scene.MessagePoolComponent.Rent();
+ }
+ public override void Dispose()
+ {
+ ErrorCode = default;
+ Tag = default;
+#if FANTASY_NET || FANTASY_UNITY
+ GetScene().MessagePoolComponent.Return(this);
+#endif
+ }
+ public uint OpCode() { return OuterOpcode.A2C_RegisterResponse; }
+ [ProtoMember(1)]
+ public string Tag { get; set; }
+ [ProtoMember(2)]
+ public uint ErrorCode { get; set; }
+ }
+ [ProtoContract]
+ public partial class C2A_LoginRequest : AMessage, IRequest, IProto
+ {
+ public static C2A_LoginRequest Create(Scene scene)
+ {
+ return scene.MessagePoolComponent.Rent();
+ }
+ public override void Dispose()
+ {
+ Username = default;
+ Password = default;
+ Source = default;
+#if FANTASY_NET || FANTASY_UNITY
+ GetScene().MessagePoolComponent.Return(this);
+#endif
+ }
+ [ProtoIgnore]
+ public A2C_LoginResponse ResponseType { get; set; }
+ public uint OpCode() { return OuterOpcode.C2A_LoginRequest; }
+ [ProtoMember(1)]
+ public string Username { get; set; }
+ [ProtoMember(2)]
+ public string Password { get; set; }
+ [ProtoMember(3)]
+ public string Source { get; set; }
+ }
+ [ProtoContract]
+ public partial class A2C_LoginResponse : AMessage, IResponse, IProto
+ {
+ public static A2C_LoginResponse Create(Scene scene)
+ {
+ return scene.MessagePoolComponent.Rent();
+ }
+ public override void Dispose()
+ {
+ ErrorCode = default;
+ Token = default;
+#if FANTASY_NET || FANTASY_UNITY
+ GetScene().MessagePoolComponent.Return(this);
+#endif
+ }
+ public uint OpCode() { return OuterOpcode.A2C_LoginResponse; }
+ [ProtoMember(1)]
+ public string Token { get; set; }
+ [ProtoMember(2)]
+ public uint ErrorCode { get; set; }
+ }
+ [ProtoContract]
+ public partial class C2G_LoginRequest : AMessage, IRequest, IProto
+ {
+ public static C2G_LoginRequest Create(Scene scene)
+ {
+ return scene.MessagePoolComponent.Rent();
+ }
+ public override void Dispose()
+ {
+ Token = default;
+#if FANTASY_NET || FANTASY_UNITY
+ GetScene().MessagePoolComponent.Return(this);
+#endif
+ }
+ [ProtoIgnore]
+ public G2C_LoginResponse ResponseType { get; set; }
+ public uint OpCode() { return OuterOpcode.C2G_LoginRequest; }
+ [ProtoMember(1)]
+ public string Token { get; set; }
+ }
+ [ProtoContract]
+ public partial class G2C_LoginResponse : AMessage, IResponse, IProto
+ {
+ public static G2C_LoginResponse Create(Scene scene)
+ {
+ return scene.MessagePoolComponent.Rent();
+ }
+ public override void Dispose()
+ {
+ ErrorCode = default;
+ Tag = default;
+ GameAccount = default;
+#if FANTASY_NET || FANTASY_UNITY
+ GetScene().MessagePoolComponent.Return(this);
+#endif
+ }
+ public uint OpCode() { return OuterOpcode.G2C_LoginResponse; }
+ [ProtoMember(1)]
+ public string Tag { get; set; }
+ [ProtoMember(2)]
+ public GameAccountInfo GameAccount { get; set; }
+ [ProtoMember(3)]
+ public uint ErrorCode { get; set; }
+ }
+ [ProtoContract]
+ public partial class G2C_LoginRepeatedMessage : AMessage, IMessage, IProto
+ {
+ public static G2C_LoginRepeatedMessage Create(Scene scene)
+ {
+ return scene.MessagePoolComponent.Rent();
+ }
+ public override void Dispose()
+ {
+#if FANTASY_NET || FANTASY_UNITY
+ GetScene().MessagePoolComponent.Return(this);
+#endif
+ }
+ public uint OpCode() { return OuterOpcode.G2C_LoginRepeatedMessage; }
+ }
+ [ProtoContract]
+ public partial class C2G_GetGameAccountInfo : AMessage, IRequest, IProto
+ {
+ public static C2G_GetGameAccountInfo Create(Scene scene)
+ {
+ return scene.MessagePoolComponent.Rent();
+ }
+ public override void Dispose()
+ {
+ AccountId = default;
+#if FANTASY_NET || FANTASY_UNITY
+ GetScene().MessagePoolComponent.Return(this);
+#endif
+ }
+ [ProtoIgnore]
+ public G2C_GetGameAccountInfo ResponseType { get; set; }
+ public uint OpCode() { return OuterOpcode.C2G_GetGameAccountInfo; }
+ [ProtoMember(1)]
+ public long AccountId { get; set; }
+ }
+ [ProtoContract]
+ public partial class G2C_GetGameAccountInfo : AMessage, IResponse, IProto
+ {
+ public static G2C_GetGameAccountInfo Create(Scene scene)
+ {
+ return scene.MessagePoolComponent.Rent();
+ }
+ public override void Dispose()
+ {
+ ErrorCode = default;
+ AccountInfo = default;
+#if FANTASY_NET || FANTASY_UNITY
+ GetScene().MessagePoolComponent.Return(this);
+#endif
+ }
+ public uint OpCode() { return OuterOpcode.G2C_GetGameAccountInfo; }
+ [ProtoMember(1)]
+ public GameAccountInfo AccountInfo { get; set; }
+ [ProtoMember(2)]
+ public uint ErrorCode { get; set; }
+ }
+ [ProtoContract]
+ public partial class GameAccountInfo : AMessage, IProto
+ {
+ public static GameAccountInfo Create(Scene scene)
+ {
+ return scene.MessagePoolComponent.Rent();
+ }
+ public override void Dispose()
+ {
+ CreateTime = default;
+ LoginTime = default;
+ GameName = default;
+#if FANTASY_NET || FANTASY_UNITY
+ GetScene().MessagePoolComponent.Return(this);
+#endif
+ }
+ [ProtoMember(1)]
+ public long CreateTime { get; set; }
+ [ProtoMember(2)]
+ public long LoginTime { get; set; }
+ [ProtoMember(3)]
+ public string GameName { get; set; }
+ }
+ [ProtoContract]
+ public partial class G2C_OpenGameNameInputWindowsMessage : AMessage, IMessage, IProto
+ {
+ public static G2C_OpenGameNameInputWindowsMessage Create(Scene scene)
+ {
+ return scene.MessagePoolComponent.Rent();
+ }
+ public override void Dispose()
+ {
+ Tag = default;
+#if FANTASY_NET || FANTASY_UNITY
+ GetScene().MessagePoolComponent.Return(this);
+#endif
+ }
+ public uint OpCode() { return OuterOpcode.G2C_OpenGameNameInputWindowsMessage; }
+ [ProtoMember(1)]
+ public string Tag { get; set; }
+ }
+ [ProtoContract]
+ public partial class C2G_UpdateAndSaveGameNameRequest : AMessage, IRequest, IProto
+ {
+ public static C2G_UpdateAndSaveGameNameRequest Create(Scene scene)
+ {
+ return scene.MessagePoolComponent.Rent();
+ }
+ public override void Dispose()
+ {
+ AccountId = default;
+ GameName = default;
+#if FANTASY_NET || FANTASY_UNITY
+ GetScene().MessagePoolComponent.Return(this);
+#endif
+ }
+ [ProtoIgnore]
+ public G2C_UpdateAndSaveGameNameResponse ResponseType { get; set; }
+ public uint OpCode() { return OuterOpcode.C2G_UpdateAndSaveGameNameRequest; }
+ [ProtoMember(1)]
+ public long AccountId { get; set; }
+ [ProtoMember(2)]
+ public string GameName { get; set; }
+ }
+ [ProtoContract]
+ public partial class G2C_UpdateAndSaveGameNameResponse : AMessage, IResponse, IProto
+ {
+ public static G2C_UpdateAndSaveGameNameResponse Create(Scene scene)
+ {
+ return scene.MessagePoolComponent.Rent();
+ }
+ public override void Dispose()
+ {
+ ErrorCode = default;
+ Tag = default;
+#if FANTASY_NET || FANTASY_UNITY
+ GetScene().MessagePoolComponent.Return(this);
+#endif
+ }
+ public uint OpCode() { return OuterOpcode.G2C_UpdateAndSaveGameNameResponse; }
+ [ProtoMember(1)]
+ public string Tag { get; set; }
+ [ProtoMember(2)]
+ public uint ErrorCode { get; set; }
+ }
+ [ProtoContract]
+ public partial class C2Chat_BoardMessageRequest : AMessage, ICustomRouteRequest, IProto
+ {
+ public static C2Chat_BoardMessageRequest Create(Scene scene)
+ {
+ return scene.MessagePoolComponent.Rent();
+ }
+ public override void Dispose()
+ {
+ Message = default;
+#if FANTASY_NET || FANTASY_UNITY
+ GetScene().MessagePoolComponent.Return(this);
+#endif
+ }
+ [ProtoIgnore]
+ public Chat2C_BoardMessageResponse ResponseType { get; set; }
+ public uint OpCode() { return OuterOpcode.C2Chat_BoardMessageRequest; }
+ [ProtoIgnore]
+ public int RouteType => Fantasy.RouteType.ChatRoute;
+ [ProtoMember(1)]
+ public string Message { get; set; }
+ }
+ [ProtoContract]
+ public partial class Chat2C_BoardMessageResponse : AMessage, ICustomRouteResponse, IProto
+ {
+ public static Chat2C_BoardMessageResponse Create(Scene scene)
+ {
+ return scene.MessagePoolComponent.Rent