当前位置: 首页 > news >正文

Wurm Unlimited 专用服务器搭建教程

Wurm Unlimited 专用服务器搭建教程

Wurm Unlimited 是一款极具深度的沙盒 MMO 游戏,脱胎于经典网页游戏 Wurm Online,由 Code Club AB 开发并于 Steam 平台发售。与大多数沙盒游戏不同,Wurm Unlimited 拥有令人叹为观止的细粒度系统:玩家可以用铲子真实改变地形高度图、挖掘矿洞、铺设道路,拥有超过 100 个可提升的技能,精密的制作链涵盖冶金、烹饪、制陶、农业、建筑等多个领域,还有复杂的政治经济体系。购买游戏后可以自由架设私有服务器,朋友们无需月费订阅即可共同探索这片广阔的中世纪大陆。由于游戏基于 Java 开发,服务端的内存配置尤为关键。


服务器配置建议

Wurm Unlimited 服务端运行在 JVM 上,地形模拟、技能计算和 AI 行为会持续占用 CPU 资源;初始地图生成时内存峰值可超过 4GB,稳定运行期间约占 3~5GB,操作系统和 JVM 开销合计需要4 核 8GB作为基础配置。

配置项最低配置推荐配置
CPU4 核4 核
内存6GB8GB
硬盘20GB40GB
带宽5Mbps10Mbps
系统Ubuntu 22.04 LTS(64位)Ubuntu 22.04 LTS(64位)

推荐使用雨云服务器 rainyun-com部署,注册填码2026off领 5 折。4 核 8GB 机型可稳定运行 Wurm Unlimited 服务端,支持 10~20 名玩家同时在线探索这片手工打造的中世纪世界,Java + 世界模拟的性能需求完全得到满足。


安装依赖

安装 Java 11+

Wurm Unlimited 服务端需要 Java 11 或更高版本:

sudoaptupdate&&sudoaptupgrade-y# 安装 OpenJDK 11(推荐版本)sudoaptinstall-yopenjdk-11-jre-headless# 验证安装java-version# 预期输出:openjdk version "11.x.x" ...# 如需 Java 17(更高性能)# sudo apt install -y openjdk-17-jre-headless

安装 SteamCMD 依赖

sudodpkg --add-architecture i386sudoaptupdatesudoaptinstall-ylib32gcc-s1 lib32stdc++6curlwgetufw# 创建专用运行用户sudouseradd-m-s/bin/bash steamsudomkdir-p/home/steam/serverssudochownsteam:steam /home/steam/servers

安装 SteamCMD:

sudosu- steammkdir~/steamcmd&&cd~/steamcmdwgethttps://steamcdn-a.akamaihd.net/client/installer/steamcmd_linux.tar.gztar-xzfsteamcmd_linux.tar.gz ./steamcmd.sh +quit

下载服务端

Wurm Unlimited 的服务端通过 SteamCMD 下载(App ID:366220)。注意:你需要拥有这款游戏的 Steam 账号才能下载(不支持 anonymous 匿名登录):

sudosu- steamcd~/steamcmd# 使用你的 Steam 账号登录下载(替换 your_steam_username)./steamcmd.sh\+force_install_dir /home/steam/servers/wurm-unlimited\+login your_steam_username\+app_update366220validate\+quit

下载完成后(约 2~4GB)确认关键文件:

ls/home/steam/servers/wurm-unlimited/# 应包含:server.jar WurmServer.bat lib/ nativelib/ 等文件ls/home/steam/servers/wurm-unlimited/server.jar

配置文件

server.properties

Wurm Unlimited 的主配置文件,控制服务器基本属性:

nano/home/steam/servers/wurm-unlimited/server.properties

配置内容示例:

# 服务器名称(在服务器列表中显示) servername=我的 Wurm Unlimited 服务器 # 服务器描述 serverdescription=欢迎探索我们的中世纪大陆! # 最大玩家数 maxplayers=20 # 服务器连接密码(留空为公开服务器) serverpassword= # 是否公开显示在服务器列表(true/false) advertise=true # GM 管理员密码(游戏内 GM 命令需要) gmpassword=your_gm_password_here # 是否是 Epic 模式(Epic 模式与标准模式存档不互通) Epic=false # 是否开启 PvP PvP=false # 游戏端口(TCP) gameport=3724 # Steam 查询端口 queryport=27015 # RMI 内部管理端口 rmiport=7220 rmiregistryport=7221 # 世界地图大小(512/1024/2048/4096,单位:格) mapsize=1024 # 默认生成点坐标(中心点) spawnx=512 spawny=512 # 最高技能上限(100 = 标准,无上限设置为 0) skillgainrate=1.0 # 是否开启夜间(false = 永昼) nightvisualeffects=true

世界设置(地图生成参数)

首次启动前,可通过命令行参数控制地图生成:

# 世界类型参数(在启动命令中附加)# --map-size 1024 地图大小(512/1024/2048)# --no-map-gen 跳过地图生成(使用已有地图)

启动服务

创建启动脚本:

nano/home/steam/servers/wurm-unlimited/start.sh
#!/bin/bashSERVER_DIR="/home/steam/servers/wurm-unlimited"LOG_DIR="$SERVER_DIR/logs"mkdir-p"$LOG_DIR"cd"$SERVER_DIR"# JVM 参数:# -Xms1g 初始堆内存 1GB# -Xmx4g 最大堆内存 4GB(根据机器内存调整,建议不超过总内存的 60%)java\-Xms1g\-Xmx4g\-XX:+UseG1GC\-XX:MaxGCPauseMillis=200\-XX:+ParallelRefProcEnabled\-Djava.awt.headless=true\-jarserver.jar\2>&1|tee"$LOG_DIR/server-$(date+%Y%m%d-%H%M%S).log"
chmod+x /home/steam/servers/wurm-unlimited/start.sh

测试启动(首次启动会生成地图,耐心等待 5~10 分钟):

sudosu- steam /home/steam/servers/wurm-unlimited/start.sh

配置 systemd 服务

exit# 退出 steam 用户sudonano/etc/systemd/system/wurm-unlimited.service
[Unit] Description=Wurm Unlimited Dedicated Server After=network.target Wants=network-online.target [Service] Type=simple User=steam Group=steam WorkingDirectory=/home/steam/servers/wurm-unlimited ExecStart=/usr/bin/java \ -Xms1g \ -Xmx4g \ -XX:+UseG1GC \ -XX:MaxGCPauseMillis=200 \ -XX:+ParallelRefProcEnabled \ -Djava.awt.headless=true \ -jar /home/steam/servers/wurm-unlimited/server.jar # 首次地图生成较慢,超时时间设长 TimeoutStartSec=600 # 崩溃后 30 秒重启(Java 服务器重启较慢) Restart=on-failure RestartSec=30 StandardOutput=journal StandardError=journal SyslogIdentifier=wurm-unlimited # 内存限制 MemoryMax=6G [Install] WantedBy=multi-user.target

启用并启动:

sudosystemctl daemon-reloadsudosystemctlenablewurm-unlimitedsudosystemctl start wurm-unlimited# 检查状态(首次启动需要等待地图生成)sudosystemctl status wurm-unlimited# 实时查看日志(首次启动请耐心等待)sudojournalctl-uwurm-unlimited-f

防火墙配置

Wurm Unlimited 使用3724 TCP(游戏通信)和27015 TCP(Steam):

# 允许 SSHsudoufw allowssh# 开放游戏主端口(TCP)sudoufw allow3724/tcp comment"Wurm Unlimited Game Port"# 开放 Steam 查询端口sudoufw allow27015/tcp comment"Wurm Unlimited Steam"# 如果使用 RMI 管理(同局域网内管理)# sudo ufw allow 7220/tcp comment "Wurm RMI"# sudo ufw allow 7221/tcp comment "Wurm RMI Registry"# 启用防火墙sudoufwenable# 查看规则sudoufw status verbose

预期输出:

Status: active To Action From -- ------ ---- 22/tcp ALLOW IN Anywhere 3724/tcp ALLOW IN Anywhere 27015/tcp ALLOW IN Anywhere

管理命令

客户端连接步骤

  1. 在 Steam 上启动 Wurm Unlimited 客户端
  2. 主菜单选择Multiple PlayersJoin Server
  3. 点击Direct Join,输入服务器 IP 和端口3724
  4. 创建角色后开始游戏

GM 管理员操作

在游戏内聊天框或 GM 控制台使用以下命令:

命令说明
#GM <密码>激活 GM 权限
#kick <玩家名>踢出玩家
#ban <玩家名> <时长>封禁玩家
#tele <x> <y>传送到坐标
#giveskill <技能> <值>设置技能等级
#sethealth <值>设置生命值
#time显示游戏内时间
#save强制保存游戏数据

世界设置与调整

通过修改server.properties可以调整多项游戏参数,修改后重启服务生效:

# 常见调整项# skillgainrate=3.0 技能提升速度(默认 1.0,调高可加速成长)# combatrating=1.0 战斗评级倍率# actiontimer=2.0 动作计时器倍率(越小动作越快)

数据备份

# Wurm 数据目录(地图、玩家数据、技能)ls/home/steam/servers/wurm-unlimited/# 备份脚本(停服后执行保证数据一致性)sudosystemctl stop wurm-unlimitedtar-czf/home/steam/backups/wurm-$(date+%Y%m%d-%H%M%S).tar.gz\/home/steam/servers/wurm-unlimited/sqlite/sudosystemctl start wurm-unlimited# 定时备份(每天凌晨 3 点)(crontab-l2>/dev/null;echo"0 3 * * * tar -czf /home/steam/backups/wurm-\$(date+\%Y\%m\%d).tar.gz /home/steam/servers/wurm-unlimited/sqlite/")|sudocrontab-usteam -

服务端更新

sudosystemctl stop wurm-unlimitedsudo-usteam /home/steam/steamcmd/steamcmd.sh\+force_install_dir /home/steam/servers/wurm-unlimited\+login your_steam_username\+app_update366220validate\+quitsudosystemctl start wurm-unlimited

总结

Wurm Unlimited 是迄今为止深度最高的沙盒 MMO 之一,其极度细粒度的世界模拟和技能系统对服务器提出了明确的 Java 内存需求。4 核 8GB 机型是流畅运行的基本保障,通过合理配置 JVM 堆内存(-Xms1g -Xmx4g)和 G1GC 垃圾回收器,可以有效控制延迟抖动。定期备份 SQLite 数据库是长期运营的核心习惯,千万不要忽视。

http://www.jsqmd.com/news/860872/

相关文章:

  • 2026哪家公司可以做GEO获客/AI搜索排名提升?九颐数科等三家服务商能力拆解与选择框架 - 广州矩阵架构科技公司
  • 创业团队如何通过统一API管理多个AI项目的模型调用
  • CacheTool性能优化:如何快速监控和分析OPcache状态
  • 10个Symfony CSRF最佳实践:避免常见安全漏洞的完整清单
  • Show-o实战教程:文本到图像生成的10个技巧
  • 2026 佛山日式搬家公司推荐 年轻人收纳整理首选 - 从来都是英雄出少年
  • # 差几分上高中选哪所中考复读学校?2026年西安五大头部机构解析 - 科技焦点
  • weather_landscape编码原理深度解析:24小时天气数据的视觉化艺术
  • awesome-regex终极指南:10个必备正则表达式工具和库
  • RAG检索“最后一公里”:Text2SQL与Text2Cypher实战,打通多库查询任督二脉!
  • 中小企业如何利用Taotoken的Token Plan实现AI成本可控
  • 华为CANN/asc-devkit:bfloat16平方根函数
  • 深入解析AVRDUDESS:图形化AVR编程工具实战手册
  • 知识竞赛大屏计分方案:让比分一目了然
  • 深度解析:基于YOLOv8的AI辅助瞄准系统专业部署与优化指南
  • GLSL优化器中的代数优化与树重构技术深度解析:提升着色器性能的终极指南
  • CANN/asc-devkit SIMT Warp投票函数
  • Azure消息服务全面对比指南:Event Hubs、Service Bus、Event Grid应用场景解析
  • Squash架构深度剖析:从Plank到Debug Attachment的完整实现
  • BetterCodable快速入门指南:5分钟学会属性包装器的强大功能
  • 知识竞赛实时排名:平分怎么处理?
  • 初次使用 Taotoken 从注册到完成第一次 API 调用的全流程耗时与感受
  • PyTorch-FCN评估与可视化:掌握模型性能分析的核心方法
  • 为什么你的洛可可图总像“廉价壁纸”?揭秘3个隐藏权重陷阱(--stylize 600失效真相+--sref滥用警告)
  • Plexdrive开发者指南:如何贡献代码与扩展功能
  • Azure 数据库服务集成终极指南:Go语言快速连接MySQL、PostgreSQL与Cosmos DB开发实战
  • Medieval Fantasy City Generator 开发环境搭建:OpenFL + Haxe 完整教程
  • 知识竞赛电子计分板 vs 手工计分板:差距有多大
  • CANN/asc-devkit SIMT bfloat16数学函数
  • SPlisHSPlasH粘度模拟技术详解:从标准方法到最新算法