Files
TEngine/DotNet/App/ProgramInfo.cs
ALEXTANG 0c8f3a5f92 [+] TEngineServer
[+] TEngineServer
2023-07-13 17:17:26 +08:00

62 lines
3.2 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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());
}
}
}