Web应用 活跃维护

DarkflameServer

DarkflameUniverse/DarkflameServer

Darkflame 宇宙服务器模拟器项目的主要存储库。

759
Stars 标星
189
Forks 分支
14
Watchers 关注
94
Open Issues
C++
主要语言
AGPL-3.0
开源协议
102.5 MB
仓库大小
1 天前
最后推送
一键安装扩展 / 插件指令
dsh plugin --profile web add github:DarkflameUniverse/DarkflameServer
git clone https://github.com/DarkflameUniverse/DarkflameServer.git
git clone git@github.com:DarkflameUniverse/DarkflameServer.git
README.md main

英文原文正文为项目原始 README(英文),本站后续会翻译为中文,当前仅剔除图片与无关章节并统一排版。

暗焰宇宙

介绍

Darkflame 宇宙 (DLU) 是一个 LEGO® 宇宙的服务器模拟器。开发始于2013年,经过多次迭代,现在能够呈现几乎完美的游戏服务器模拟。

乐高® 宇宙

由 NetDevil 和乐高集团开发的 LEGO® 宇宙,于2010年10月推出,并于2012年1月停止运营。

许可证

Darkflame Universe 授权采用 AGPLv3,请阅读 LICENSE。一些重要事项:

  • 对于您使用代码所做的任何行为,我们概不负责
  • 代码不提供任何形式的担保
  • 当您分发代码时,必须披露您所做的任何修改
  • 为他人托管服务器也算作分发

托管服务器

我们不推荐托管公共服务器。Darkflame Universe 适用于小规模部署,例如在朋友群体内部使用。它未经过大规模部署测试,大规模部署存在额外的安全风险。

资源文件提供

Darkflame Universe 是一个服务器模拟器,并不分发任何 LEGO® Universe 文件。设置这个服务器模拟器和玩游戏需要独立的游戏客户端,我们无法提供。强烈建议用户参考 这里 列出的安全校验和,以确认客户端是否可用。

设置单人服务器

  • 如果你不知道 WSL 是什么,请跳过此警告。
    警告:由于 WSL 处理文件系统同步的方式,WSL 版本 1 不支持使用 sqlite 作为数据库。
    如果必须在 WSL 下运行服务器,你必须使用版本 2。不这样做会导致保存数据丢失。
  • 单人游戏安装现在不再需要从源代码构建服务器或安装开发工具。
  • 下载最新的 Windows 版本(或你需要的任何版本)并将文件解压到客户端中的一个文件夹。请注意,此设置假定当你双击你放在与 legouniverse.exe 相同文件夹中的文件夹时,MasterServer.exe 文件也在其中。
  • 你应该能够在与 legouniverse.exe 相同的文件夹中看到包含服务器文件的文件夹。
  • 进入服务器文件夹并打开 sharedconfig.ini。找到 client_location 所在的行,并在其后添加 ..,使该行显示为 client_location=..。
  • 要运行服务器,双击 MasterServer.exe。
  • 第一次运行服务器时,你将被要求创建一个账户。创建账户后,服务器将关闭,需要重新启动。
  • 要连接到服务器,可以删除你 LEGO Universe 客户端中找到的 boot.cfg 文件,将 boot.cfg 文件重命名为其他名称,或按照此处的步骤操作,如果你希望保留该文件。
  • 关闭服务器时,强烈建议点击 MasterServer.exe 窗口,并按住 ctrl 同时按 c 停止服务器。
  • 我们正在研究一种方法,使当你关闭游戏时,服务器可以自动停止,同时当你打开游戏时,服务器会自动启动。
  • 如果你不是在 mac 上设置服务器,可以忽略此说明。
  • 注意:你需要在系统偏好设置中允许 AuthServer、ChatServer、MasterServer、WorldServer 和 libmariadbcpp.dylib 运行。由于二进制文件未签名,初始弹出窗口会阻止它们,允许运行后,服务器将正常运行。

如果你不打算为他人托管服务器、在代码库工作或想使用 MariaDB 作为数据库,你可以到此为止。

如果你希望使用 MariaDB 作为数据库而不是默认的 sqlite,请按照此处的步骤操作。

设置开发环境的步骤

免责声明

设置难度

在整个构建和设置过程中,对命令行的熟悉程度以及最好是类 Unix 开发环境的经验会非常有利。

从源代码构建单人 Windows 服务器的逐步指南

如果您只希望在 Windows 机器上为单人服务器从源代码进行设置,请使用 HailStorm 的原生 Windows 设置指南 并跳过此自述文件。

克隆仓库

如果您使用的是 Windows,则需要从 这里 下载并安装 git

然后运行以下命令

git clone --recursive https://github.com/DarkflameUniverse/DarkflameServer

安装依赖项

所需的编译器版本

  • g 11 或更高版本
  • MSVC 未选中
  • clang 未选中
  • appleclang 未选中

Windows 软件包

请确保已安装 MSVC C 编译器(推荐)或 Clang 编译器。您还需要下载并安装 CMake (版本 3.25 到 版本 3.31!)。

MacOS 软件包

请确保已安装 brew。您需要安装以下软件包

brew install cmake gcc mariadb openssl zlib

Linux 软件包

确保安装了如 gcc 和 zlib 之类的软件包。根据不同的发行版,这些软件包可能已经安装。请注意,在像 Ubuntu 这样的系统上,您需要 zlib1g-dev 软件包以便获取头文件。还需要 libssl-dev 以及 openssl。您还需要一个 MySQL 数据库解决方案。我们推荐使用 mariadb-server。

对于 Ubuntu,您可以运行以下命令。在其他系统上,软件包安装命令会有所不同。

sudo apt update && sudo apt upgrade

# Install packages
sudo apt install build-essential gcc zlib1g-dev libssl-dev openssl mariadb-server cmake

所需的 CMake 版本

此项目使用 CMake 版本 3.25 至 版本 3.31,因此您需要确保已安装此版本。您可以在终端中使用以下命令检查您的 CMake 版本。

cmake --version

如果您打算在 Ubuntu 环境中运行服务器,您可能需要获取比可用软件包提供的更高版本的 cmake。

一般的方法是获得签名密钥的副本,然后将 CMake 仓库添加到您的 apt 中。您可以使用以下命令执行此操作。

以下命令的来源

# Remove the old version of CMake
sudo apt purge --auto-remove cmake

# Prepare for installation
sudo apt update && sudo apt install -y software-properties-common lsb-release && sudo apt clean all

# Obtain a copy of the signing key
wget -O - https://apt.kitware.com/keys/kitware-archive-latest.asc 2>/dev/null | gpg --dearmor - | sudo tee /etc/apt/trusted.gpg.d/kitware.gpg >/dev/null

# Add the repository to your sources list.
sudo apt-add-repository "deb https://apt.kitware.com/ubuntu/ $(lsb_release -cs) main"

# Next you'll want to ensure that Kitware's keyring stays up to date
sudo apt update
sudo apt install kitware-archive-keyring
sudo rm /etc/apt/trusted.gpg.d/kitware.gpg

# If sudo apt update above returned an error, copy the public key at the end of the error message and run the following command
# if the error message was "The following signatures couldn't be verified because the public key is not available: NO_PUBKEY 6AF7F09730B3F0A4"
# then the below command would be "sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 6AF7F09730B3F0A4"
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys <TheCopiedPublicKey>

# Finally update and install
sudo apt update
sudo apt install cmake

数据库设置

首先你需要启动 MariaDB。

在 Windows 上,该服务默认始终运行。

在 MacOS 上,运行以下命令

brew services start mariadb

对于 Linux,运行以下命令

sudo systemctl start mysql
# If systemctl is not a known command on your distribution, try the following instead
sudo service mysql start

每次重启环境时都需要运行此命令

如果您使用的是 Linux 和 systemctl,并且希望 MariaDB 实例在启动时自动启动,请运行以下命令

sudo systemctl enable --now mysql

一旦 MariaDB 启动,你需要为 Darkflame Universe 创建一个用户和一个空数据库。

首先,登录到 MariaDB 实例。

在 Ubuntu/Linux、MacOS 或其他类似 Unix 的操作系统上,要做到这一点,请在终端中运行以下命令

# Logs you into the MariaDB instance as root
sudo mysql

对于 Windows,请在 Command Prompt (MariaDB xx.xx) 终端中运行以下命令

# Logs you into the mysql instance
mysql -u root -p
# You will then be prompted for the password you set for root during installation of MariaDB

现在您已登录,请运行以下命令。

# Creates a user for this computer which uses a password and grant said user all privileges.
# Change mydarkflameuser to a custom username and password to a custom password. 
CREATE USER 'mydarkflameuser'@'localhost' IDENTIFIED BY 'password';
GRANT ALL ON *.* TO 'mydarkflameuser'@'localhost' WITH GRANT OPTION;
FLUSH PRIVILEGES;

# Then create a database for Darkflame Universe to use.
CREATE DATABASE darkflame;

构建服务器

你可以在仓库的根文件夹中运行 build.sh:

./build.sh

或者手动运行在 build.sh 中使用的命令。

如果您想更快地构建服务器,请在命令后添加 -j<number>,其中 number 是同时运行的编译任务数量。建议该数字总是比您的核心数量少 1,以防止减慢速度。如果您想同时进行 4 个任务的构建,命令将如下所示:

./build.sh -j4

备注

根据你的操作系统,你可能需要在构建之前调整 CMakeVariables.txt 中的一些预处理器定义:

  • 如果你使用的是 MacOS,请确保 OPENSSL_ROOT_DIR 指向 openssl 根目录。
  • 默认情况下,它应该设置为正确的目录。
  • 如果你使用的是 Darkflame Universe 客户端,请确保在 build/sharedconfig.ini 中将 client_net_version 更改为 171023。

配置您的服务器

此服务器需要进行几个步骤来配置以满足您的使用需求。

所需配置

Darkflame Universe 可以使用打包客户端或未打包客户端运行。请导航到 build/sharedconfig.ini 并填写以下字段:

  • mysql_host(这是您的 MariaDB 服务器的 IP 地址或主机名。这很可能是 localhost)
    • 如果您在除 3306 之外的端口上设置了 MariaDB 实例(这可以在 Windows 安装中完成),您需要将此值设置为 tcp://localhost:portNum,其中 portNum 替换为您选择的运行 MariaDB 的端口。
  • mysql_database(这是您为服务器创建的数据库)
  • mysql_username(这是您为服务器创建的用户)
  • mysql_password(这是您为服务器创建的用户的密码)
  • client_location(这是客户端文件的位置。这应当是打包或未打包客户端的文件夹路径)
    • 理想情况下,客户端路径不应包含任何空格。

可选配置

  • 服务器构建完成后,构建目录中应有五个 ini 文件:sharedconfig.ini、authconfig.ini、chatconfig.ini、masterconfig.ini 和 worldconfig.ini。
  • authconfig.ini 包含一个选项,用于在您的服务器上启用或禁用游戏密钥。不要更改 auth 的默认端口。
  • chatconfig.ini 包含一个端口选项。
  • masterconfig.ini 包含与您希望服务器运行权限相关的选项。
  • sharedconfig.ini 包含跨所有服务器共享的多个选项。
  • worldconfig.ini 包含多个选项,可在您需要时开启生活质量改进功能。如果您希望获得最原始的体验,您将需要关闭其中的一些设置。

验证您的设置

您的构建目录至少应包含以下所有文件。所有列出的文件都是服务器启动所必需的。ini 文件可以位于环境变量 DLU_CONFIG_DIR 中,无需放在此目录中。(Windows 的可执行文件末尾会有 .exe):

  • sharedconfig.ini
  • AuthServer(.exe)
  • authconfig.ini
  • ChatServer(.exe)
  • chatconfig.ini
  • MasterServer(.exe)
  • masterconfig.ini
  • WorldServer(.exe)
  • worldconfig.ini
  • blocklist.dcf
  • migrations
  • vanity
  • navmeshes
  • 根据平台选择以下列表之一
    • Windows
      • libmariadb.dll
      • mariadbcpp.dll
      • zlib.dll
    • MacOS
      • libmariadbcpp.dylib
    • *nix
      • libmariadbcpp.so

运行服务器

如果所有配置都正确,你现在应该能够运行位于 build 目录下的 MasterServer 二进制文件。Darkflame Universe 使用 1024 以下的端口号,因此在 Linux 下,你必须通过运行以下命令来赋予 AuthServer 二进制文件网络权限:

sudo setcap 'cap_net_bind_service=+ep' AuthServer

Linux 服务

如果你在基于 Linux 的系统上运行此程序,它将使用你的终端以交互方式运行程序,这会阻止你用于其他任务,并且需要保持终端打开才能运行服务器。注意:你可以改用 screen 或 tmux 来创建虚拟终端。要非交互式运行服务器,我们可以通过复制以下文件来使用 systemctl 服务:

cp ./systemd.example /etc/systemd/system/darkflame.service

确保编辑文件 /etc/systemd/system/darkflame.service 并更改:

  • 将 User 和 Group 更改为运行 darkflame 服务器的用户。
  • 将 ExecPath 更改为服务器可执行文件的完整路径。

要注册、启用并启动服务,请使用以下命令:

  • 重新加载 systemd 管理器配置,使其识别新的服务文件:
    systemctl daemon-reload
  • 启动服务:
    systemctl start darkflame.service
  • 使用以下方式启用或禁用服务开机启动:
    systemctl enable darkflame.service
    systemctl disable darkflame.service
  • 验证服务是否正在运行且没有错误:
    systemctl status darkflame.service
  • 您还可以使用 journalctl 重启、停止或查看服务的日志
    systemctl restart darkflame.service
    systemctl stop darkflame.service
    journalctl -xeu darkflame.service

第一个用户或添加更多用户。

第一次运行 MasterServer 时,系统会提示您创建一个账户。要从命令行创建更多账户,请使用 MasterServer -a 来提示创建管理员账户。此方法仅供系统管理员用作入门手段,请勿使用此方法为其他用户创建账户!

账户管理工具(Nexus 控制面板)

如果您只是自己使用此服务器,可以跳过设置 Nexus 控制面板

按照 这里 的说明设置 DLU Nexus 控制面板 Web 应用程序。这是用户创建账户的预期方式,同时也是管理员批准名称/宠物/财产及执行其他管理操作的预期方式。

管理员等级

管理员等级,也称为游戏管理员等级(下文简称 gmlevel),在 MySQL 数据库的 accounts.gm_level 列中指定。普通玩家应将其设置为 0,没有特殊权限。系统管理员将其设置为 9,拥有所有权限。gmlevel 8 可用于授予玩家大部分权限,但不包括关键安全权限。

当角色的 gmlevel 不为 0 时,某些游戏行为将发生变化。测试游戏玩法时,应始终使用 gmlevel 为 0 的角色。

用户指南

需要对客户端 boot.cfg 文件进行一些更改,以便在您的服务器上进行游戏。

允许用户连接到您的服务器

所有这些更改都是必需的。请完整阅读本节内容

要连接到服务器,请按照以下步骤操作:

  • 在客户端目录中,找到 boot.cfg
  • 在文本编辑器中打开 boot.cfg,并找到这一行 UGCUSE3DSERVICES=7:
  • 确保7后面的数字为 0
  • 或者,完全删除包含 UGCUSE3DSERVICES 的这一行
  • 接下来找到 AUTHSERVERIP=0:
  • 将冒号 : 后及随后的 , 之后的内容替换为您配置的服务器公网IP。例如,本地托管服务器可以设置为 AUTHSERVERIP=0:localhost
  • 启动 legouniverse.exe,如果在类似Unix的操作系统上,请通过 wine 启动
  • 注意,如果您使用的是WSL2,需要在服务器和客户端中将公网IP配置为WSL2实例的IP,而不是localhost,可通过在终端运行 ifconfig 获取。Windows默认使用WSL1,因此对大多数用户不适用。举例来说,对于IP为12.34.56.78的服务器,boot.cfg应包含如下内容
    AUTHSERVERIP=0:12.34.56.78,
    UGCUSE3DSERVICES=7:0

更新您的服务器

要将您的服务器更新到最新版本,请导航到您克隆的目录

cd path/to/DarkflameServer

运行以下命令以更新到最新的更改

git pull
git submodule update --init --recursive

现在按照你的系统的构建部分操作,你的服务器已是最新。

游戏内命令

  • 所有游戏内命令的列表可以在这里找到。

聊天 Web API

  • 聊天服务器有一个可以通过 chatconfig.ini 启用的 API。
  • 你可以在这里查看该 API 的 OpenAPI 文档。

验证您的客户端文件

乐高® 宇宙 1.10.64

要验证您确实正在使用乐高® 宇宙 1.10.64 客户端,请确保您有完整的客户端压缩在一个 rar 文件中,然后运行以下命令。

# Replace <file> with the file path to the zipped client

# If on Linux or MacOS
shasum -a 256 <file>

# If on Windows using the Command Prompt
certutil -hashfile <file> SHA256

下面是已知的客户端 SHA256 校验和:

  • 8f6c7e84eca3bab93232132a88c4ae6f8367227d7eafeaa0ef9c40e86c14edf5(打包客户端,RAR 压缩)
  • c1531bf9401426042e8bab2de04ba1b723042dc01d9907c2635033d417de9e05(打包客户端,包含额外语言,RAR 压缩)
  • 0d862f71eedcadc4494c4358261669721b40b2131101cbd6ef476c5a6ec6775b(未打包客户端,包含额外语言,RAR 压缩)

如果返回的哈希与上述某一行匹配,那么你可以继续设置服务器。如果你使用的是从正式服务器完全下载并完整的客户端,它也能正常工作,但上述哈希可能不会匹配。否则,你必须获取 LEGO® Universe 1.10.64 的完整安装包。你还必须确保 LEGO Universe 客户端不在 Windows OneDrive 中。DLU 不支持也不会支持客户端存储在 OneDrive 中,因此请确保你已将客户端移到该位置之外。

Darkflame Universe 客户端

Darkflame Universe 客户端使用比现有正式客户端更高的版本号进行标识。这么做是为了确保旧版本或不完整的客户端不会为我们产生误报的错误报告,同时因为我们为客户端进行了错误修复和新增内容。

要验证你确实在使用 Darkflame Universe 客户端,请确保你已将完整客户端压缩 为 zip 文件 并运行以下命令。

# Replace <file> with the file path to the zipped client

# If on Linux or MacOS
shasum -a 1 <file>

# If on Windows using the Command Prompt
certutil -hashfile <file> SHA1

Darkflame Universe 客户端已知的良好 SHA1 校验和:

  • 91498e09b83ce69f46baf9e521d48f23fe502985(打包客户端,ZIP 压缩)

Docker

Darkflame 服务器会自动构建并发布为 Docker 容器 / OCI 镜像,发布到 GitHub 容器注册表:ghcr.io/darkflameuniverse/darkflameserver。

撰写

[!警告]
似乎在 Windows 上使用 WSL 2 后端的 Docker Desktop 与 MariaDB 存在一些问题(参见 mariadb-docker#331),这些问题是由 NexusDashboard 迁移触发的,因此这种设置可能不适合您。如果是这种情况,请在 NexusDashboard#92 中告诉我们您的设置。

您可以使用 docker-compose 工具来设置 MariaDB 数据库、运行 Darkflame 服务器并通过 Nexus Dashboard 管理它们。为此:

  • 安装 Docker 桌面版
  • 打开包含你LU客户端的目录
    • 如果 legouniverse.exe 在名为 client 的子文件夹中,你就可以开始了。可能还有一个名为 versions 的文件夹。
    • 否则,请创建一个新的 client 文件夹,并将 exe 及其他所有内容(例如 res 和 locale)移动到其中。这是必要的,以绕过客户端中的一个错误,该错误会在断开连接后阻止你重新登录。
  • 下载 docker-compose.yml 文件并将其放置在 client 旁边。
  • 下载 .env.example 文件,并将其与 client 放在同一目录下,文件名为 .env
    • 你可能会收到这个名称以点开头的警告,请注意,这是有意为之。根据你的操作系统不同,你可能需要启用显示隐藏文件的功能(例如Linux上的Gnome中的Ctrl-H)和/或文件扩展名(Windows的“视图”标签中的“文件名扩展名”)。
    • 使用强随机密码更新 ACCOUNT_MANAGER_SECRET 和 MARIADB_PASSWORD。
    • 使用密码生成器 https://gchq.github.io/CyberChef/#recipe=Pseudo-Random_Number_Generator(256,'Hex')
    • 避免使用 : 和 @ 字符
    • 一旦创建了数据库用户,更改密码不会更新它,所以服务器会直接连接失败。
    • 将 EXTERNAL_IP 设置为你的局域网 IP 或公共 IP,如果你想为朋友和家人托管游戏
  • 在包含 docker-compose.yml 和 client 的文件夹中打开终端
  • 运行 docker compose up -d
    • 在 Linux 上这可能需要 sudo,并且需要较新的 docker compose 版本
  • 运行 docker exec -it dlu-darkflameserver-1 /app/MasterServer -a 并按照指示创建初始管理员账户
  • 打开 http://localhost:8000,用管理员账户访问 Nexus 仪表盘创建普通用户
  • 在 client/boot.cfg 中设置 AUTHSERVERIP=0:localhost
    • 如果你之前更改过 EXTERNAL_IP,请将 localhost 替换为该值。
    • 还要确保将 UGCUSE3DSERVICES=7: 设置为 0
  • 启动 legouniverse.exe

独立版

这假设您已经在主机上或另一个 Docker 容器中部署了一个数据库。

此容器的基本部署如下:

# example docker contianer deployment
docker run -it \
    -v /path/to/configs/:/app/configs \
    -v /path/to/logs/:/app/logs \
    -v /path/to/dumps/:/app/dumps \
    -v /path/to/res:/app/res:ro \
    -v /path/to/resServer:/app/resServer \
    -e DUMP_FOLDER=/app/dumps \
    -p 1001:1001/udp \
    -p 2005:2005/udp \
    -p 3000-3300:3000-3300/udp \
ghcr.io/darkflameuniverse/darkflameserver:latest

您需要替换 /path/to/ 以反映您主机上的路径。

.ini 文件中的任何配置选项都可以通过环境变量覆盖:例如:shared_config.ini 中的 log_to_console=1 可以通过 -e LOG_TO_CONSOLE=0 来覆盖。

开发文档

这仍在进行中,但下面是一些服务器系统和结构的文档快速链接:网络消息结构 通用系统文档

鸣谢

DLU 团队

研究与工具

社区管理

标志

  • 科尔·彼得森(BlasterBuilder)

特别感谢

此代码库使用了一定量的 AI 辅助。一些较大的部分也可能是 AI 生成的。然而,不要使用 AI 工具对该仓库的 issue 进行处理。如果大量生成的自动 PR/issue 可能会被视为垃圾信息而丢弃。

本站来源与版权声明
  • 本文标题:DarkflameServer - Darkflame 宇宙服务器模拟器项目的主要存储库
  • 本文链接:https://www.cn121.com/webapp/darkflameuniverse-darkflameserver.html
  • 原项目:DarkflameUniverse/DarkflameServer 版权归原作者 DarkflameUniverse 及贡献者所有
  • 收录信息:本站于 2026-10-18 收录本项目,本页所列协议与仓库指标均为收录当时的状态;该日期之后原项目的版本更新与协议变更,本页不作同步。
  • 开源协议:收录时本项目采用 AGPL-3.0(查看 LICENSE 原文),本站转载其原始文档(未改动文字,仅剔除图片与无关章节);使用、修改、分发请以该仓库 LICENSE 原文为准。基于本页内容形成的衍生作品, 须同样以该协议发布。
  • 站点出处:本文首发于 OneTwoOne,收录自 GitHub 开源项目 DarkflameUniverse/DarkflameServer。
  • 内容说明:本页正文为原项目 README 原文(英文),本站后续会翻译为中文(当前尚未译出,仅将二级标题译为中文,便于按栏目定位;标题原文可在下方原仓库中查看),仅剔除了图片与赞助等无关章节、并把相对链接改为绝对地址;页首简介为机器翻译自仓库描述。
  • 引用声明:商业转载、第三方聚合或 AI 检索训练引用时,请务必保留以上来源出处、本文永久链接,以及原项目的版权声明与许可信息。
  • 下架通道:若原项目此后变更或收紧了许可协议、或作者/权利人认为本站的收录方式(译文、排版适配、简介翻译等)超出其授权范围,请通过 xyd3302001@163.com 发送下架通知,并附上项目地址与本页链接。本站核实后将第一时间删除本页内容,或改为不复制原文的目录性收录;署名更正等其他要求可一并提出。