78 lines
2.2 KiB
C#
78 lines
2.2 KiB
C#
using Microsoft.Extensions.Configuration;
|
|
using MMOserver.Config;
|
|
using MMOserver.Game.Channel.Maps;
|
|
using MMOserver.Game.Service;
|
|
using MMOserver.RDB;
|
|
using Serilog;
|
|
using ServerLib.Utils;
|
|
|
|
namespace MMOserver;
|
|
|
|
class Program
|
|
{
|
|
private static async Task Main()
|
|
{
|
|
// 크래시 덤프 핸들러 (Release: .log + .dmp / Debug: .log)
|
|
CrashDumpHandler.Register();
|
|
|
|
// .MinimumLevel.Warning() // Warning 이상만 출력 배포시
|
|
|
|
IConfigurationRoot config = new ConfigurationBuilder()
|
|
.SetBasePath(AppContext.BaseDirectory)
|
|
.AddJsonFile("config.json", optional: true) // 로컬 개발용
|
|
.AddEnvironmentVariables() // 도커 배포용
|
|
.Build();
|
|
|
|
AppConfig.Initialize(config);
|
|
MapLoader.Initialize();
|
|
|
|
// DB 연결
|
|
// DbConnectionFactory dbFactory = new DbConnectionFactory(config);
|
|
|
|
string timestamp = DateTime.Now.ToString("yyyy-MM-dd_HH-mm-ss");
|
|
|
|
Log.Logger = new LoggerConfiguration()
|
|
.MinimumLevel.Debug()
|
|
.WriteTo.Console()
|
|
.WriteTo.File($"logs/log_{timestamp}.txt")
|
|
.CreateLogger();
|
|
|
|
Log.Information("Write Log Started");
|
|
|
|
int port = AppConfig.Server.Port;
|
|
string connectionString = "test";
|
|
GameServer gameServer = new GameServer(port, connectionString);
|
|
|
|
// Ctrl+C → Stop() 호출 → Run() 루프 탈출 → serverThread 종료
|
|
Console.CancelKeyPress += (_, e) =>
|
|
{
|
|
// 프로세스 즉시 종료 막기
|
|
e.Cancel = true;
|
|
gameServer.Stop();
|
|
};
|
|
|
|
// 게임 서버 스레드 생성
|
|
// Thread serverThread = new Thread(() =>
|
|
// {
|
|
// gameServer.Init();
|
|
// gameServer.Run();
|
|
// });
|
|
|
|
// 게임 서버 스레드 시작
|
|
// serverThread.Start();
|
|
|
|
// Run()이 끝날 때까지 대기
|
|
// serverThread.Join();
|
|
|
|
// 비동기 변경
|
|
await Task.Run(async () =>
|
|
{
|
|
gameServer.Init();
|
|
await gameServer.Run();
|
|
});
|
|
|
|
// Log 종료
|
|
Log.CloseAndFlush();
|
|
}
|
|
}
|