mirror of
https://github.com/raphaelcheung/zircon-legend-server.git
synced 2026-10-17 05:20:52 +08:00
0ea9199c44
主循环与节流(SEnvir.cs): - 主循环加条件 Sleep:处理快于 1ms 预算时 Thread.Sleep(1) 让出 CPU,处理慢时不 Sleep 保吞吐(空闲 CPU 100%→<10%) - ActiveObjects 为空时直接 break,避免空集合在 1ms 时间片内空转 - 跨日 GC.Collect 由 Forced 改 Optimized,消除每日 STW 尖刺 - 无玩家且无持久化变更时跳过自动保存与备份:加 DataChanged 脏标志,WebApi 命令/支付处理/跨日公会重置后置标志,保存条件改为 (Players.Count>0 || DataChanged),保存后清标志(AutoClearUserDatas 清理幂等不置标志) - 异常 catch 的 File.AppendAllText 改为入队 ErrorLogs,由 WriteLogsLoop 异步落盘,避免主循环被磁盘 I/O 阻塞 热路径去 LINQ 与分配(PlayerObject/MonsterObject/MapObject.cs): - PlayerObject.Process 的每 tick HashSet 改为复用字段 _tagClearList - MonsterObject.ViewRange 的 PoisonList.Any 改为每 tick Process 中刷新的 _hasAbyssPoison 缓存 - MapObject.CanBeSeenBy 的 Buffs.Any(Cloak||Transparency) 改为 ProcessBuff 每 tick 刷新的 _hasCloakOrTransparency 缓存
22 lines
816 B
Docker
22 lines
816 B
Docker
FROM mcr.microsoft.com/dotnet/aspnet:8.0
|
|
WORKDIR /zircon
|
|
|
|
ARG REPO=raphaelcheung/zircon-legend-server
|
|
RUN apt-get update \
|
|
&& apt-get install -y --no-install-recommends curl jq unzip \
|
|
&& rm -rf /var/lib/apt/lists/*
|
|
|
|
# 自动拉取最新 release 的 linux-x64 包并解压
|
|
RUN ASSET_URL=$(curl -fsSL "https://api.github.com/repos/${REPO}/releases/latest" \
|
|
| jq -r '[.assets[] | select(.name | endswith("linux-x64.zip")) | .browser_download_url][0]') \
|
|
&& if [ -z "$ASSET_URL" ] || [ "$ASSET_URL" = "null" ]; then echo "未找到 linux-x64.zip 资产" >&2; exit 1; fi \
|
|
&& echo "下载: $ASSET_URL" \
|
|
&& curl -fsSL "$ASSET_URL" -o /tmp/pkg.zip \
|
|
&& unzip -q /tmp/pkg.zip -d /zircon \
|
|
&& chmod +x /zircon/Server \
|
|
&& rm /tmp/pkg.zip
|
|
|
|
RUN mkdir -p datas Map
|
|
EXPOSE 7000 3000 7080
|
|
ENTRYPOINT ["./Server"]
|