mirror of
https://github.com/Alex-Rachel/TEngine.git
synced 2025-08-14 16:51:28 +00:00
[+] TEngineServer
[+] TEngineServer
This commit is contained in:
90
DotNet/App/NLog.config
Normal file
90
DotNet/App/NLog.config
Normal file
@@ -0,0 +1,90 @@
|
||||
<?xml version="1.0" encoding="utf-8" ?>
|
||||
<nlog xmlns="http://www.nlog-project.org/schemas/NLog.xsd"
|
||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:schemaLocation="http://www.nlog-project.org/schemas/NLog.xsd NLog.xsd">
|
||||
<targets async="true">
|
||||
<target name="ServerDebug" xsi:type="File"
|
||||
encoding="UTF-8"
|
||||
createDirs="true"
|
||||
autoFlush="false"
|
||||
keepFileOpen="true"
|
||||
concurrentWrites="true"
|
||||
openFileCacheTimeout="30"
|
||||
openFileFlushTimeout="60"
|
||||
fileName="${basedir}/../Logs/Server/Server${date:format=yyyyMMdd}/${logger}.${var:appId}.${date:format=yyyyMMddHH}.Debug.log"
|
||||
layout="${longdate} ${callsite:className=false:methodName=false:fileName=true:includeSourcePath=false:skipFrames=2} ${message}"/>
|
||||
</targets>
|
||||
<targets async="true">
|
||||
<target name="ServerInfo" xsi:type="File"
|
||||
encoding="UTF-8"
|
||||
createDirs="true"
|
||||
autoFlush="false"
|
||||
keepFileOpen="true"
|
||||
concurrentWrites="true"
|
||||
openFileCacheTimeout="30"
|
||||
openFileFlushTimeout="60"
|
||||
fileName="${basedir}/../Logs/Server/Server${date:format=yyyyMMdd}/${logger}.${var:appId}.${date:format=yyyyMMddHH}.Info.log"
|
||||
layout="${longdate} ${message}"/>
|
||||
</targets>
|
||||
<targets async="true">
|
||||
<target name="ServerWarn" xsi:type="File"
|
||||
encoding="UTF-8"
|
||||
createDirs="true"
|
||||
autoFlush="false"
|
||||
keepFileOpen="true"
|
||||
concurrentWrites="true"
|
||||
openFileCacheTimeout="30"
|
||||
openFileFlushTimeout="60"
|
||||
fileName="${basedir}/../Logs/Server/Server${date:format=yyyyMMdd}/${logger}.${var:appId}.${date:format=yyyyMMddHH}.Warn.log"
|
||||
layout="${longdate} ${message}"/>
|
||||
</targets>
|
||||
<targets async="true">
|
||||
<target name="ServerError" xsi:type="File"
|
||||
encoding="UTF-8"
|
||||
createDirs="true"
|
||||
autoFlush="false"
|
||||
keepFileOpen="true"
|
||||
concurrentWrites="true"
|
||||
openFileCacheTimeout="30"
|
||||
openFileFlushTimeout="60"
|
||||
fileName="${basedir}/../Logs/Server/Server${date:format=yyyyMMdd}/${logger}.${var:appId}.${date:format=yyyyMMddHH}.Error.log"
|
||||
layout="${longdate} ${message}"/>
|
||||
</targets>
|
||||
<targets async="true">
|
||||
<target name="ServerTrace" xsi:type="File"
|
||||
encoding="UTF-8"
|
||||
createDirs="true"
|
||||
autoFlush="false"
|
||||
keepFileOpen="true"
|
||||
concurrentWrites="true"
|
||||
openFileCacheTimeout="30"
|
||||
openFileFlushTimeout="60"
|
||||
fileName="${basedir}/../Logs/Server/Server${date:format=yyyyMMdd}/${logger}.${var:appId}.${date:format=yyyyMMddHH}.Trace.log"
|
||||
layout="${longdate} ${message}"/>
|
||||
</targets>
|
||||
<targets async="true">
|
||||
<target name="ConsoleColor" xsi:type="ColoredConsole"
|
||||
useDefaultRowHighlightingRules="false"
|
||||
layout="${longdate} ${message}">
|
||||
<highlight-row condition="level == LogLevel.Debug" foregroundColor="DarkGreen" />
|
||||
<highlight-row condition="level == LogLevel.Info" foregroundColor="Gray" />
|
||||
<highlight-row condition="level == LogLevel.Warn" foregroundColor="Yellow" />
|
||||
<highlight-row condition="level == LogLevel.Error" foregroundColor="DarkRed" />
|
||||
<highlight-row condition="level == LogLevel.Fatal" foregroundColor="Red" />
|
||||
</target>
|
||||
</targets>
|
||||
<rules>
|
||||
<!-- 控制台 调试或编辑器启动的时候会调用-->
|
||||
<logger ruleName="ConsoleTrace" name="Server" level="Trace" writeTo="ConsoleColor" />
|
||||
<logger ruleName="ConsoleDebug" name="Server" level="Debug" writeTo="ConsoleColor" />
|
||||
<logger ruleName="ConsoleInfo" name="Server" level="Info" writeTo="ConsoleColor" />
|
||||
<logger ruleName="ConsoleWarn" name="Server" level="Warn" writeTo="ConsoleColor" />
|
||||
<logger ruleName="ConsoleError" name="Server" level="Error" writeTo="ConsoleColor" />
|
||||
<!-- 服务端日志输出文件 发布到服务器后会调用-->
|
||||
<logger ruleName="ServerDebug" name="Server" level="Debug" writeTo="ServerDebug" />
|
||||
<logger ruleName="ServerTrace" name="Server" level="Trace" writeTo="ServerTrace" />
|
||||
<logger ruleName="ServerInfo" name="Server" level="Info" writeTo="ServerInfo" />
|
||||
<logger ruleName="ServerWarn" name="Server" level="Warn" writeTo="ServerWarn" />
|
||||
<logger ruleName="ServerError" name="Server" level="Error" writeTo="ServerError" />
|
||||
</rules>
|
||||
</nlog>
|
3483
DotNet/App/NLog.xsd
Normal file
3483
DotNet/App/NLog.xsd
Normal file
File diff suppressed because it is too large
Load Diff
32
DotNet/App/Program.cs
Normal file
32
DotNet/App/Program.cs
Normal file
@@ -0,0 +1,32 @@
|
||||
using TEngine;
|
||||
using TEngine.Core;
|
||||
using TEngine.Logic;
|
||||
|
||||
try
|
||||
{
|
||||
App.Init();
|
||||
|
||||
AssemblySystem.Init();
|
||||
|
||||
ConfigTableSystem.Bind();
|
||||
|
||||
App.Start().Coroutine();
|
||||
|
||||
Entry.Start().Coroutine();
|
||||
|
||||
while(true)
|
||||
{
|
||||
Thread.Sleep(1);
|
||||
ThreadSynchronizationContext.Main.Update();
|
||||
SingletonSystem.Update();
|
||||
}
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
Log.Error(e);
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
62
DotNet/App/ProgramInfo.cs
Normal file
62
DotNet/App/ProgramInfo.cs
Normal file
@@ -0,0 +1,62 @@
|
||||
using TEngine;
|
||||
using TEngine.Core;
|
||||
using TEngine.Logic;
|
||||
|
||||
public class ProgramInfo
|
||||
{
|
||||
/// <summary>
|
||||
/// 启动说明。
|
||||
/// </summary>
|
||||
public void Temp()
|
||||
{
|
||||
try
|
||||
{
|
||||
// 框架启动需要在命令行后面添加参数才会正常使用分别是:
|
||||
// 例如demo的服务器参数: --Mode Develop --AppType Game --AppId 100
|
||||
// Mode有两种:
|
||||
// Develop:开发模式 这个是所有在配置定义的服务器都会启动并且在同一个进程下、方便开发调试。
|
||||
// 当然如果游戏体量不大也可以用这个模式发布,后期改成Release模式也是没有问题的
|
||||
// Release:发布模式只会启动启动参数传递的Server、也就是只会启动一个Server
|
||||
// 您可以做一个Server专门用于管理启动所有Server的工具或脚本、一般都是运维同学来做
|
||||
// AppType有两种:
|
||||
// Game:游戏服务器
|
||||
// Export:导出配置表工具
|
||||
// 例如我要启动导表工具参数就应该是--AppType Export就可以了Mode和AppId都可以不用设置
|
||||
// AppId:告诉框架应该启动哪个服务器、对应ServerConfig.xls的Id 如果Mode使用的Develop的话、这个Id不生效
|
||||
// 初始化框架
|
||||
App.Init();
|
||||
|
||||
// 演示的框架创建了Model和Hotfix两个工程所以需要AssemblyManager.Load来加载这两个程序集
|
||||
// 这个看个人而定、你也可以不按照演示框架这样创建2个程序集、总之有几个程序集就AssemblyManager.Load一下加载到框架中
|
||||
// 因为App这个工程就不需要了、因为这里没有逻辑、具体看AssemblyLoadHelper的逻辑、自己写一下
|
||||
// 加载需要的程序集、这里因为每个人都框架规划都不一样、所以这块开放出自己定义
|
||||
AssemblySystem.Init();
|
||||
|
||||
// 绑定框架需要的配置文件
|
||||
// 框架启动服务器需要配置文件才可以启动、比如需要启动什么服务器、服务器的监听地址是什么等等、所以要提前绑定一下
|
||||
ConfigTableSystem.Bind();
|
||||
|
||||
// 启动框架
|
||||
// 启动框架会加载Demo下Config/Excel/Server里四个文件配置
|
||||
// 因为上面ConfigTableHelper.Bind已经绑定好了、所以框架可以直接读取这4个配置文件进行启动
|
||||
App.Start().Coroutine();
|
||||
|
||||
// 框架启动后需要执行的逻辑、现在是我是写的启动服务器的逻辑、同上这里也开放出来自定义
|
||||
// 但这里一定是异步的、不然框架部分功能可能不会正常、因为阻塞到这里、需要Update需要下面的才可以驱动
|
||||
// 这个入口代码可以不用调用、这里只是演示下如果调用应该怎么处理
|
||||
Entry.Start().Coroutine();
|
||||
|
||||
while (true)
|
||||
{
|
||||
Thread.Sleep(1);
|
||||
ThreadSynchronizationContext.Main.Update();
|
||||
SingletonSystem.Update();
|
||||
}
|
||||
}
|
||||
catch
|
||||
(Exception e)
|
||||
{
|
||||
Log.Error(e.ToString());
|
||||
}
|
||||
}
|
||||
}
|
64
DotNet/App/TEngineSettings.json
Normal file
64
DotNet/App/TEngineSettings.json
Normal file
@@ -0,0 +1,64 @@
|
||||
{
|
||||
"Export": {
|
||||
"ProtoBufTemplatePath": {
|
||||
"Value": "../Config/Template/ProtoTemplate.txt",
|
||||
"Comment": "ProtoBuf生成代码模板的位置"
|
||||
},
|
||||
"ProtoBufDirectory": {
|
||||
"Value": "../Config/ProtoBuf/",
|
||||
"Comment": "ProtoBuf文件所在的位置文件夹位置"
|
||||
},
|
||||
"ProtoBufServerDirectory": {
|
||||
"Value": "../../Assets/GameScripts/DotNet/Logic/Generate~/NetworkProtocol/",
|
||||
"Comment": "ProtoBuf生成到服务端的文件夹位置"
|
||||
},
|
||||
"ProtoBufClientDirectory": {
|
||||
"Value": "../../Assets/GameScripts/HotFix/GameProto/GameProtocol/",
|
||||
"Comment": "ProtoBuf生成到客户端的文件夹位置"
|
||||
},
|
||||
"ExcelProgramPath": {
|
||||
"Value": "../Config/Excel/",
|
||||
"Comment": "Excel配置文件根目录"
|
||||
},
|
||||
"ExcelVersionFile": {
|
||||
"Value": ".../Config/Excel/Version.txt",
|
||||
"Comment": "Excel版本文件的位置"
|
||||
},
|
||||
"ExcelServerFileDirectory": {
|
||||
"Value": "../../Server/Hotfix/Generate/ConfigTable/Entity/",
|
||||
"Comment": "Excel生成服务器代码的文件夹位置"
|
||||
},
|
||||
"ExcelClientFileDirectory": {
|
||||
"Value": "../../Client/Unity/Assets/Scripts/Hotfix/Generate/ConfigTable/Entity/",
|
||||
"Comment": "Excel生成客户端代码文件夹位置"
|
||||
},
|
||||
"ExcelServerBinaryDirectory": {
|
||||
"Value": "../Config/Binary/",
|
||||
"Comment": "Excel生成服务器二进制数据文件夹位置"
|
||||
},
|
||||
"ExcelClientBinaryDirectory": {
|
||||
"Value": "../../Client/Unity/Assets/Bundles/Config/",
|
||||
"Comment": "Excel生成客户端二进制数据文件夹位置"
|
||||
},
|
||||
"ExcelServerJsonDirectory": {
|
||||
"Value": "../Config/Json/Server/",
|
||||
"Comment": "Excel生成服务器Json数据文件夹位置"
|
||||
},
|
||||
"ExcelClientJsonDirectory": {
|
||||
"Value": "../Config/Json/Client/",
|
||||
"Comment": "Excel生成客户端Json数据文件夹位置"
|
||||
},
|
||||
"ExcelTemplatePath": {
|
||||
"Value": "../Config/Template/ExcelTemplate.txt",
|
||||
"Comment": "Excel生成代码模板的位置"
|
||||
},
|
||||
"ServerCustomExportDirectory": {
|
||||
"Value": "../../Server/Hotfix/Generate/CustomExport/",
|
||||
"Comment": "服务器自定义导出代码文件夹位置"
|
||||
},
|
||||
"ClientCustomExportDirectory": {
|
||||
"Value": "../../Client/Unity/Assets/Scripts/Hotfix/Generate/CustomExport/",
|
||||
"Comment": "客户端自定义导出代码文件夹位置"
|
||||
}
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user