# ═══════════════════════════════════════════════════════════════════════ # Asset Provider 与通用配置 # ═══════════════════════════════════════════════════════════════════════ # 资源提供模式:client-owned / local / remote(精确小写,默认 local) # local:注册本地 /patch/cn,受支持启动会先 content:sync 再启动服务。 # remote:只发布 CDN_BASE_URL,不注册/代理本地 /patch,启动时不自动同步。 # client-owned:客户端自行管理资源,不读取 CDN_DIR/CDN_BASE_URL,也不自动同步。 ASSET_MODE="local" # 仅 local 使用:CDN 资源父目录(目录内必须包含 cn/),相对于项目根目录 CDN_DIR=".cdn" # 每日/每周复位时间(服务端时间的小时,0-23) DAILY_RESET_HOUR=5 # ═══════════════════════════════════════════════════════════════════════ # 局域网部署(开发 / 测试)— 默认激活 # ═══════════════════════════════════════════════════════════════════════ # cp .env.example .env 后无需修改即可在本机启动。 # 如果客户端在另一台设备上,请将 CN_LISTEN_HOST 和 CDN_BASE_URL 设为本机 # 的实际 LAN IP(不要用 127.0.0.1)。 # CN 服务端 HTTP 监听地址与端口 CN_LISTEN_HOST="0.0.0.0" # 监听所有网卡,允许局域网设备连接 CN_LISTEN_PORT="8001" # HTTP API + Web 管理面板 + CDN 资源 # 全局服(国际服 Kakao 版本,一般不使用) LISTEN_HOST="localhost" # 全局服 HTTP 监听地址 LISTEN_PORT="8000" # 全局服 HTTP 端口 # local 可选、remote 必填、client-owned 忽略:绝对 http(s) CDN 下载 URL # URL 不得包含 credentials、query 或 fragment。 # 同机测试用 127.0.0.1;局域网其他设备用你的 LAN IP CDN_BASE_URL="http://127.0.0.1:8001/patch/cn" # ═══════════════════════════════════════════════════════════════════════ # 联机 TCP 会话服务器(cooperation_room + cooperation_battle) # ═══════════════════════════════════════════════════════════════════════ SESSION_PORT="8003" # TCP 监听端口 SESSION_HOST="0.0.0.0" # 监听所有网卡,允许局域网设备连接 # SESSION_PUBLIC_HOST="" # 可选:房间响应中告知客户端的局域网可达地址 # SESSION_HANDSHAKE_TIMEOUT_MS="15000" # 未发送首个握手帧的连接超时 # SESSION_MAX_FRAME_BYTES="262144" # 单帧上限(UTF-8 字节) # SESSION_MAX_BUFFER_BYTES="1048576" # 未完成帧的累计接收缓冲上限 # SESSION_TCP_KEEPALIVE_MS="10000" # TCP keepalive 初始延迟 # MULTI_SEND_QUEUE_MAX_MESSAGES="512" # 单连接发送队列消息上限 # MULTI_SEND_QUEUE_MAX_BYTES="4194304" # 单连接发送队列字节上限 # MULTI_SEND_QUEUE_MAX_AGE_MS="15000" # 持续背压超过此时长后断开该连接 # BATTLE_LOADING_LEASE_MS="60000" # battle 握手后等待 SceneReady 的安全上限 # BATTLE_HEARTBEAT_LEASE_MS="25000" # battle 活跃连接无业务帧的安全上限 # 默认 embedded 无需配置。跨服务端联机时参考 docs/protocol/multi-hub-setup.md: # MULTI_MODE="host" # Host 同时提供 8003 TCP 与 8004 Hub 控制 # MULTI_HUB_HOST="0.0.0.0" # MULTI_HUB_PORT="8004" # # MULTI_MODE="client" # Client 优先使用远程 Hub # MULTI_HUB_URL="http://:8004" # MULTI_HUB_TOKEN="" # Client 的 SESSION_* 是 Hub 不可用时按需启动的本地 fallback TCP 配置。 # SESSION_PUBLIC_HOST="" # 联机房间自动清理(单位:毫秒) # MULTI_ROOM_INCOMPLETE_EXPIRY_MS=900000 # 未满 3 人房间过期时间(默认 15 分钟) # MULTI_ROOM_FULL_EXPIRY_MS=1800000 # 满 3 人房间过期时间(默认 30 分钟) # MULTI_ROOM_CLEAN_INTERVAL_MS=60000 # 过期检查间隔(默认 60 秒) # 联机 NPC 延迟(单位:毫秒) # NPC_JOIN_DELAY_MS=2000 # NPC 加入房间延迟(默认 2 秒) # NPC_READY_DELAY_MS=500 # NPC 准备延迟(默认 0.5 秒) # ═══════════════════════════════════════════════════════════════════════ # iOS 实验性兼容(默认关闭) # ═══════════════════════════════════════════════════════════════════════ # IOS_COMPAT_ENABLED=1 时启用 iOS 适配(SDK 登录 mock、.dis 平台拆分、 # archive-ios-* 资源隔离)。默认关闭:iOS 请求走 Android 相同响应,行为零变化。 # 启用时必须显式配置 IOS_API_HOST 为客户端可达地址(IP 或域名,不含端口以外的 # 内容),缺失或非法配置只会让 iOS 适配明确不可用,绝不影响 Android 服务启动。 # IOS_COMPAT_ENABLED="0" # IOS_API_HOST="<公网IP或域名>:" # 示例:198.51.100.7:7001(文档保留地址) # IOS_API_SCHEME="http" # 服务器无 TLS 时必须为 http # 注意:IPA 补丁工具对 Mach-O 中的 API authority 有约 26 bytes 的长度预算, # 过长域名可能无法写入;该长度校验由客户端补丁工具负责。 # 领取历史维护:默认启用,31 天前过期;每存档最多保留 500 条。 RECEIVE_HISTORY_RETENTION_ENABLED=1 RECEIVE_HISTORY_RETENTION_MAX_AGE_DAYS=31 RECEIVE_HISTORY_RETENTION_MAX_ROWS=500