Files
Fishing2Server/Main/Program.cs
2025-10-29 17:59:43 +08:00

68 lines
2.9 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.
// ================================================================================
// Fantasy.Net 服务器应用程序入口
// ================================================================================
// 本文件是 Fantasy.Net 分布式游戏服务器的主入口点
//
// 初始化流程:
// 1. 强制加载引用程序集,触发 ModuleInitializer 执行
// 2. 配置日志基础设施NLog
// 3. 启动 Fantasy.Net 框架
// ================================================================================
using Fantasy;
try
{
// 初始化引用的程序集,确保 ModuleInitializer 执行
// .NET 采用延迟加载机制 - 仅当类型被引用时才加载程序集
// 通过访问 AssemblyMarker 强制加载程序集并调用 ModuleInitializer
// 注意Native AOT 不存在延迟加载问题,所有程序集在编译时打包
AssemblyHelper.Initialize();
// 配置 NLog 日志基础设施
// 可选:传入 null 或省略参数以使用控制台日志
var logger = new Fantasy.NLog("Server");
// 使用配置的日志系统启动 Fantasy.Net 框架
await Fantasy.Platform.Net.Entry.Start(logger);
}
catch (Exception ex)
{
Console.Error.WriteLine($"服务器初始化过程中发生致命错误:{ex}");
Environment.Exit(1);
}
// using Fantasy;
// using Fantasy.ConfigTable;
// using Fantasy.Helper;
// using Fantasy.IdFactory;
// using Fantasy.Platform.Net;
//
//
//
// // 设置ID生成规则
// IdFactoryHelper.Initialize(IdFactoryType.World);
// // // 获取配置文件
// // // 比如通过远程获取这个配置文件,这样可以多组服务器共享一套配置了
// // var machineConfigText = await FileHelper.GetTextByRelativePath("../../../Config/Json/Server/MachineConfigData.Json");
// // var processConfigText = await FileHelper.GetTextByRelativePath("../../../Config/Json/Server/ProcessConfigData.Json");
// // var worldConfigText = await FileHelper.GetTextByRelativePath("../../../Config/Json/Server/WorldConfigData.Json");
// // var sceneConfigText = await FileHelper.GetTextByRelativePath("../../../Config/Json/Server/SceneConfigData.Json");
// // // 初始化配置文件
// // // 如果重复初始化方法会覆盖掉上一次的数据,非常适合热重载时使用
// // MachineConfigData.Initialize(machineConfigText);
// // ProcessConfigData.Initialize(processConfigText);
// // WorldConfigData.Initialize(worldConfigText);
// // SceneConfigData.Initialize(sceneConfigText);
//
// //解析配置文件
// var gameConfigText = await FileHelper.GetTextByRelativePath("../../../Config/Json/configs.Json");
// ConfigTableHelper.Initialize(gameConfigText,NB.AssemblyHelper.Assemblies);
//
// // 注册日志模块到框架
// // 开发者可以自己注册日志系统到框架只要实现Fantasy.ILog接口就可以。
// // 这里用的是NLog日志系统注册到框架中。
// Log.Register(new Fantasy.NLog("Server"));
//
// await Entry.Start(NB.AssemblyHelper.Assemblies);