@echo off
REM 设置控制台编码为 UTF-8
chcp 65001 >nul

REM 设置 JAR 包的名称
set JAR_NAME=incubator-game-1.0-SNAPSHOT.jar

REM 设置 Log4j2 配置文件路径
set LOG4J_CONFIG=conf/log4j2.xml

REM 设置 Java 选项,包含优化和编码修复
set JAVA_OPTS=-XX:+UnlockExperimentalVMOptions ^
               -XX:+UseG1GC ^
               -XX:MaxGCPauseMillis=200 ^
               -XX:+ParallelRefProcEnabled ^
               -XX:+AlwaysPreTouch ^
               -Xms2G ^
               -Xmx2G ^
               -XX:+UseStringDeduplication ^
               -XX:G1NewSizePercent=30 ^
               -XX:G1MaxNewSizePercent=60 ^
               -XX:InitiatingHeapOccupancyPercent=45 ^
               -XX:SurvivorRatio=8 ^
               -XX:+HeapDumpOnOutOfMemoryError ^
               -XX:HeapDumpPath=heapdump.hprof ^
               -Dfile.encoding=UTF-8 ^
               -Dsun.jnu.encoding=UTF-8 ^
               

REM 设置 JAR 包路径
set JAR_PATH=%~dp0%JAR_NAME%

REM 检查 JAR 包是否存在
if not exist "%JAR_PATH%" (
    echo [ERROR] 未找到 JAR 包 "%JAR_PATH%"
    pause
    exit /b
)

REM 检查 Log4j2 配置文件是否存在
if not exist "%~dp0%LOG4J_CONFIG%" (
    echo [ERROR] 未找到 Log4j2 配置文件 "%~dp0%LOG4J_CONFIG%"
    pause
    exit /b
)

REM 检查 Java 是否安装
java -version >nul 2>&1
if %ERRORLEVEL% NEQ 0 (
    echo [ERROR] Java 未安装或未配置 JAVA_HOME,请检查环境变量。
    pause
    exit /b
)

REM 启动 JAR 包
echo 正在启动游戏服务端...
java %JAVA_OPTS% -jar "%JAR_PATH%"

REM 提示并保持窗口运行
echo 游戏服务端运行中,按 Ctrl+C 停止服务或关闭窗口以退出...
pause