
commit f4311e593faa00381a50e4ca363e0b6753cadb1d Author: jadebenn <jadebenn@users.noreply.github.com> Date: Sat Nov 16 22:16:50 2024 -0600 temp fix for MSVC debug builds commit 0e81c69de858809de72c97ef1aa285711b303938 Author: jadebenn <jadebenn@users.noreply.github.com> Date: Sat Nov 16 21:11:04 2024 -0600 CMakePresets indentation commit d7aa52a0fcd0db5225b5f807a59c2b63d16b7486 Author: jadebenn <jadebenn@users.noreply.github.com> Date: Sat Nov 16 21:03:37 2024 -0600 use DLU_CONFIG_DIR envvar commit d1bfe9f15d933eaaebd86a912a76776a647d5911 Merge: 6e781da2 de3fe931 Author: jadebenn <jonahbenn@yahoo.com> Date: Sat Nov 16 20:24:05 2024 -0600 Merge branch 'main' into MSVCCompilerFlags commit 6e781da2e7cdea4d5b449ee362a8ab719fd1c3cd Merge: 6ccd72c6 3a6123fe Author: jadebenn <jonahbenn@yahoo.com> Date: Sat Apr 13 18:15:16 2024 -0500 Merge remote-tracking branch 'upstream/main' into MSVCCompilerFlags commit 6ccd72c6a901b39612b524a7bb7cebf3b38c085c Author: jadebenn <jonahbenn@yahoo.com> Date: Sat Apr 13 17:48:58 2024 -0500 add RelWithDebInfo presets and move -Werror flag into presets.json commit b96cfd71a43f3d28736170816814a010c918f9f9 Merge: c4adcee8 1ee45639 Author: jadebenn <jonahbenn@yahoo.com> Date: Tue Apr 9 01:47:17 2024 -0500 Merge remote-tracking branch 'upstream/main' into MSVCCompilerFlags commit c4adcee8e812efdfa3d840b96c6de9e6af4265e7 Merge: 7f9fcb5b 28ce8ac5 Author: jadebenn <jonahbenn@yahoo.com> Date: Mon Apr 8 22:30:35 2024 -0500 Merge remote-tracking branch 'upstream/main' into MSVCCompilerFlags commit 7f9fcb5b758c697d9ea75bb5cfb1720e000670d5 Author: jadebenn <jonahbenn@yahoo.com> Date: Mon Apr 8 22:10:01 2024 -0500 change gnu and clang build directories to enable consistent artifact generation commit 553740e8a0a899e8c261501e6c24f3f27b951ccc Author: jadebenn <jonahbenn@yahoo.com> Date: Mon Apr 8 21:38:34 2024 -0500 update build presets commit 39a8029fdabd4787394ae185b84340cda6561af2 Author: jadebenn <jonahbenn@yahoo.com> Date: Mon Apr 8 20:30:06 2024 -0500 update github actions commit 7eae64f8a6caa1462ce285ef1f55109a1aa5d5db Author: jadebenn <jonahbenn@yahoo.com> Date: Mon Apr 8 20:18:46 2024 -0500 disable /WX on MSVC commit 24d3bc0ce65776671ce850e4535d1c4110089372 Author: jadebenn <jonahbenn@yahoo.com> Date: Mon Apr 8 20:11:59 2024 -0500 altered cmake configuration scripts commit 368f4ccabf576f4dc00f16e0c25646f46c2182b7 Author: jadebenn <jonahbenn@yahoo.com> Date: Sat Apr 6 23:00:04 2024 -0500 change defaults commit 7d7ea68bf9af88cc0f8565f334912638e18edc65 Author: jadebenn <jadebenn@users.noreply.github.com> Date: Sat Apr 6 22:23:32 2024 -0500 fix preset commit 57d0b12f9b07caf3173be04587125fe4eca33fb1 Author: jadebenn <jonahbenn@yahoo.com> Date: Sat Apr 6 21:50:32 2024 -0500 expand cmake presets commit aa62d357bb133c6a770572bc3bcad8442941fc9a Author: jadebenn <jadebenn@users.noreply.github.com> Date: Sat Apr 6 20:50:26 2024 -0500 rename gcc to gnu commit d6e4edd886c0d38d465728584a76dc2569a2b5e4 Author: jadebenn <jadebenn@users.noreply.github.com> Date: Sat Apr 6 20:27:20 2024 -0500 change runtime output dir commit abe413f239c2d4ac82b98621b3948fc0822e01f3 Author: jadebenn <jadebenn@users.noreply.github.com> Date: Sat Apr 6 20:22:47 2024 -0500 debug try 2 commit c6c771b892d713d789a3fb4fb008693522af845b Author: jadebenn <jadebenn@users.noreply.github.com> Date: Sat Apr 6 20:16:00 2024 -0500 add debug messages (again) commit 6c6966afd25494897dd9c3c20b5d44160c557268 Author: jadebenn <jadebenn@users.noreply.github.com> Date: Sat Apr 6 19:46:58 2024 -0500 was not actually fixed commit fab74c90b645d77765004521fa8109af02118843 Author: jadebenn <jadebenn@users.noreply.github.com> Date: Sat Apr 6 19:37:02 2024 -0500 are these messages actually somehow fixing the issue? commit a4b6b7c0d9b905dc53d5c34668d312c0a39a4e6c Author: jadebenn <jadebenn@users.noreply.github.com> Date: Sat Apr 6 19:27:34 2024 -0500 see if this re-breaks mac commit 07626f8ebba098d7ed04b0269666774c291683df Author: jadebenn <jadebenn@users.noreply.github.com> Date: Sat Apr 6 19:04:59 2024 -0500 back to debug messages commit bdf9adc0e84bfad8bdec408af7f55c7dd0c8f1d4 Author: jadebenn <jadebenn@users.noreply.github.com> Date: Sat Apr 6 18:47:55 2024 -0500 Revert "try disabling an apple-specific build rule" This reverts commit 45ec66e97605e3ea5b0a76f6eed0ec6f955c1675. commit 8154207848918ae5d2d13edc90522c104479f242 Author: jadebenn <jadebenn@users.noreply.github.com> Date: Sat Apr 6 18:47:53 2024 -0500 Revert "more fiddling with mac test builds" This reverts commit 0f843c02c90b2aa5f0c211e19c47b00798c295c8. commit 8f5c10d15806b0b9f5e425e146f67bc3da4b34ca Author: jadebenn <jadebenn@users.noreply.github.com> Date: Sat Apr 6 18:47:52 2024 -0500 Revert "try and narrow down the macos build failure cause" This reverts commit 5fd86833fa6e421860496c3626415ab70c93a795. commit 54876bf886b16f7c217af82aa805cf85321f369e Author: jadebenn <jadebenn@users.noreply.github.com> Date: Sat Apr 6 18:47:50 2024 -0500 Revert "try stripping out all the custom macos test logic again" This reverts commit cc15a26ce80ff9cfec5f1a94b0c00c42e1832c55. commit 8af35727a6038eb29d60d0fcebdebb536e6417f0 Author: jadebenn <jadebenn@users.noreply.github.com> Date: Sat Apr 6 18:47:48 2024 -0500 Revert "I'm really just throwing everything to the wall and seeing what sticks" This reverts commit 1a05b027fe822a94e5a6b70e6c744623d6a98e61. commit e143f22adafa82cfa3462869f0842f2acbdbdebb Author: jadebenn <jadebenn@users.noreply.github.com> Date: Sat Apr 6 18:47:46 2024 -0500 Revert "more macos tinkering" This reverts commit 829ec35b57983ad4444d90ab780fff95a8b47608. commit 495e70c37641673f420bd6589e3706247eb741fd Author: jadebenn <jadebenn@users.noreply.github.com> Date: Sat Apr 6 18:47:44 2024 -0500 Revert "implib" This reverts commit d41349d6edada6a041c64971730eed1c51af14c5. commit 37dbb52104917116a344b86dab90160f5b43411d Author: jadebenn <jadebenn@users.noreply.github.com> Date: Sat Apr 6 18:47:42 2024 -0500 Revert "try manual link directory specification" This reverts commit 0c2d40632ee5df9c241532d8bf62de9969e47f51. commit ce568189fca00cccae412ee81593ec74b760781b Author: jadebenn <jadebenn@users.noreply.github.com> Date: Sat Apr 6 18:47:40 2024 -0500 Revert "save me" This reverts commit bd73aa21a9cd1625f7cf567ab5b56bde46c0af0e. commit c420a72016df072a7bd190ca3d4106ef0af9a202 Author: jadebenn <jadebenn@users.noreply.github.com> Date: Sat Apr 6 18:47:36 2024 -0500 Revert "aaaaaaaaa" This reverts commit 338279c396e7c4a78174929a0aaf5205f2c026e6. commit dccac945bb100289cd0bff67e071563cc51bf7e8 Author: jadebenn <jadebenn@users.noreply.github.com> Date: Sat Apr 6 18:47:08 2024 -0500 Revert "paths paths paths" This reverts commit 9a7d86aa6c59e73de27fbcda2111f7a1472008f4. commit 9a7d86aa6c59e73de27fbcda2111f7a1472008f4 Author: jadebenn <jadebenn@users.noreply.github.com> Date: Sat Apr 6 18:39:08 2024 -0500 paths paths paths commit 338279c396e7c4a78174929a0aaf5205f2c026e6 Author: jadebenn <jadebenn@users.noreply.github.com> Date: Sat Apr 6 18:29:01 2024 -0500 aaaaaaaaa commit bd73aa21a9cd1625f7cf567ab5b56bde46c0af0e Author: jadebenn <jadebenn@users.noreply.github.com> Date: Sat Apr 6 18:21:16 2024 -0500 save me commit 0c2d40632ee5df9c241532d8bf62de9969e47f51 Author: jadebenn <jadebenn@users.noreply.github.com> Date: Sat Apr 6 18:09:03 2024 -0500 try manual link directory specification commit d41349d6edada6a041c64971730eed1c51af14c5 Author: jadebenn <jadebenn@users.noreply.github.com> Date: Sat Apr 6 17:52:20 2024 -0500 implib commit 829ec35b57983ad4444d90ab780fff95a8b47608 Author: jadebenn <jadebenn@users.noreply.github.com> Date: Sat Apr 6 17:43:47 2024 -0500 more macos tinkering commit 1a05b027fe822a94e5a6b70e6c744623d6a98e61 Author: jadebenn <jadebenn@users.noreply.github.com> Date: Sat Apr 6 17:18:41 2024 -0500 I'm really just throwing everything to the wall and seeing what sticks commit cc15a26ce80ff9cfec5f1a94b0c00c42e1832c55 Author: jadebenn <jadebenn@users.noreply.github.com> Date: Sat Apr 6 17:09:45 2024 -0500 try stripping out all the custom macos test logic again commit 5fd86833fa6e421860496c3626415ab70c93a795 Author: jadebenn <jadebenn@users.noreply.github.com> Date: Sat Apr 6 16:54:53 2024 -0500 try and narrow down the macos build failure cause commit 0f843c02c90b2aa5f0c211e19c47b00798c295c8 Author: jadebenn <jadebenn@users.noreply.github.com> Date: Sat Apr 6 16:47:19 2024 -0500 more fiddling with mac test builds commit 45ec66e97605e3ea5b0a76f6eed0ec6f955c1675 Author: jadebenn <jadebenn@users.noreply.github.com> Date: Sat Apr 6 16:29:29 2024 -0500 try disabling an apple-specific build rule commit 6e41423dc3b3bd9366ca769cb13d69ab274877dc Author: jadebenn <jadebenn@users.noreply.github.com> Date: Sat Apr 6 04:01:07 2024 -0500 one last MacOS try for the night commit bc79a17ddb50df28148ca128eabe41c04ec40572 Author: jadebenn <jadebenn@users.noreply.github.com> Date: Sat Apr 6 03:50:41 2024 -0500 try fixing macos build commit d6031ce9f5d9686673ef1cf4b5629dfffc311d6d Author: jadebenn <jadebenn@users.noreply.github.com> Date: Sat Apr 6 03:04:52 2024 -0500 try zero-initializinng this struct to solve docker issue commit 24cbd94a80ac8aac6a72c18b04c9b5bef374a505 Author: jadebenn <jadebenn@users.noreply.github.com> Date: Sat Apr 6 02:34:36 2024 -0500 attempted docker fix commit 7812f27330c3bd88519b984ceb6b4e0710279ef2 Merge: ef8029d4 18c27b14 Author: jadebenn <jadebenn@users.noreply.github.com> Date: Fri Apr 5 23:32:29 2024 -0500 Merge branch 'main' into MSVCCompilerFlags commit ef8029d46fa01a41470cad2135bd9543eea0530a Author: jadebenn <jadebenn@users.noreply.github.com> Date: Fri Apr 5 23:30:26 2024 -0500 update cmake configs commit 04a7bc2b8da3e59d8dc19855b654a6833a571614 Author: jadebenn <jonahbenn@yahoo.com> Date: Fri Apr 5 21:00:23 2024 -0500 edit build script commit 9fc6b4e97330c054409d3211fba92de2e0ea7f2a Author: jadebenn <jonahbenn@yahoo.com> Date: Fri Apr 5 18:10:09 2024 -0500 fix build directory issue commit a19afaaab0fc0fb3efae7d1e6d9caf167ef278da Author: jadebenn <jonahbenn@yahoo.com> Date: Fri Apr 5 18:06:37 2024 -0500 update .gitignore commit 426d34a0aa2ef9ef9c520facfe0e0ef816d58a77 Author: jadebenn <jonahbenn@yahoo.com> Date: Fri Apr 5 17:58:19 2024 -0500 unexclude toolchain dir commit 9ce7d9043c5159998620b9f9d731ca6f61aae0d7 Author: jadebenn <jonahbenn@yahoo.com> Date: Fri Apr 5 17:55:02 2024 -0500 updated cmake workflows commit db5c10c331491c1e4866652603107b21701b3d0c Author: jadebenn <jonahbenn@yahoo.com> Date: Fri Apr 5 16:58:00 2024 -0500 temporarily remove macos build for testing purposes commit f7da00ff89a6decdd7fc2848e6539cfcc5b64caa Merge: 145f97cf 661e0939 Author: jadebenn <jonahbenn@yahoo.com> Date: Fri Apr 5 16:51:39 2024 -0500 Merge branch 'MSVCCompilerFlags' of https://github.com/jadebenn/DarkflameServer into MSVCCompilerFlags commit 145f97cfdcfc7f5229342e926a29960bdefe6d51 Author: jadebenn <jonahbenn@yahoo.com> Date: Fri Apr 5 16:50:39 2024 -0500 build reorganization and experimental clang support commit 661e0939b7e5f80c44a2ed08293e3c558738dbfc Author: jadebenn <jadebenn@users.noreply.github.com> Date: Wed Apr 3 22:13:11 2024 -0500 fix typo in windows preset commit 018e5707d78a866ab78a2f087cc7c22c6c0d00ca Author: jadebenn <jonahbenn@yahoo.com> Date: Wed Apr 3 20:30:33 2024 -0500 try using compiler flags for mac instead commit 81e5f059d53575593a06291a580eec6da0de55fc Author: jadebenn <jonahbenn@yahoo.com> Date: Wed Apr 3 20:20:31 2024 -0500 macos refuses to work :( commit a3d70197f2c7d79cee190aca382c915a1dd04ff9 Author: jadebenn <jonahbenn@yahoo.com> Date: Wed Apr 3 20:13:37 2024 -0500 try adding build types back to mac commit 005d439a4a13728b52712aadfd3a41a4ce365877 Author: jadebenn <jonahbenn@yahoo.com> Date: Wed Apr 3 19:58:44 2024 -0500 edit macos presets commit bba825f0c8622e8023f5e0e531c30b0c38d15da1 Author: jadebenn <jonahbenn@yahoo.com> Date: Wed Apr 3 19:48:20 2024 -0500 update CMake presets commit 199c8224a59cacd70ebb238c6b9bcbb7cb5f05ee Merge: 1116ba83 c1c5db65 Author: jadebenn <jonahbenn@yahoo.com> Date: Wed Apr 3 19:00:39 2024 -0500 Merge remote-tracking branch 'upstream/main' into MSVCCompilerFlags commit 1116ba8306bb56db0765b6a7e2cbdca5b3d20594 Merge: 9316bd6e c7b3d9e8 Author: jadebenn <jadebenn@users.noreply.github.com> Date: Sun Feb 11 21:03:02 2024 -0600 Merge branch 'DarkflameUniverse:main' into MSVCCompilerFlags commit 9316bd6eeb56947355b4f0bf975a4236fb8c6855 Merge: 62fb8ad0 29666a1f Author: jadebenn <jadebenn@users.noreply.github.com> Date: Sat Feb 10 21:02:52 2024 -0600 Merge branch 'DarkflameUniverse:main' into MSVCCompilerFlags commit 62fb8ad071a15fd5236c93648f17f4553b8e0fd8 Merge: d5089b72 24f94edf Author: jadebenn <jadebenn@users.noreply.github.com> Date: Thu Feb 8 21:41:50 2024 -0600 Merge branch 'DarkflameUniverse:main' into MSVCCompilerFlags commit d5089b72cc667bb8ba47b370ef5b33589ae856fa Author: jadebenn <jonahbenn@yahoo.com> Date: Sun Feb 4 16:26:38 2024 -0600 add Linux debug preset commit 7c9f56ff76bed9d33d577d78b9dc8060b3ac373a Author: jadebenn <jonahbenn@yahoo.com> Date: Sat Feb 3 16:02:53 2024 -0600 move out g++ O2 flag commit 6cc99fae42193560dd2c99fd54820b604bf0b242 Merge: 96276391 050184c5 Author: jadebenn <jadebenn@users.noreply.github.com> Date: Sat Feb 3 02:41:43 2024 -0600 Merge branch 'DarkflameUniverse:main' into MSVCCompilerFlags commit 962763916d301cee21fa675d6743ced871c53fa1 Author: jadebenn <jonahbenn@yahoo.com> Date: Tue Jan 30 22:00:49 2024 -0600 export the compile commands so I can see if they're having any effect commit 4b7d1d65937d6261fe505950b055a8e03577a087 Author: jadebenn <jonahbenn@yahoo.com> Date: Tue Jan 30 21:49:24 2024 -0600 trying 'init' flags instead commit 3fa80063e926fa70222f23f9b00860ff7a31026b Author: jadebenn <jonahbenn@yahoo.com> Date: Tue Jan 30 21:13:47 2024 -0600 ONE MORE TIME commit ae2115c68d18b2b12bf4435764248a2bba2f7d68 Author: jadebenn <jonahbenn@yahoo.com> Date: Tue Jan 30 20:52:33 2024 -0600 final(?) try for now commit 119937f5d980a702d1fc47531de330332830688d Author: jadebenn <jonahbenn@yahoo.com> Date: Tue Jan 30 20:34:44 2024 -0600 ditto commit ab39754597b4576c174d5093685d3f361fb6028a Author: jadebenn <jonahbenn@yahoo.com> Date: Tue Jan 30 20:34:41 2024 -0600 testing if these even have any effect commit e7058be3dcee8dd5eb533122a663819e76855df7 Author: jadebenn <jonahbenn@yahoo.com> Date: Tue Jan 30 20:28:05 2024 -0600 third test commit 10d7776fb2ab1e3f646035a4deb6b79b211193f0 Author: jadebenn <jonahbenn@yahoo.com> Date: Tue Jan 30 19:33:59 2024 -0600 trying more variations on the flags commit 70f37560986b956e21cf5473edf0f8f3f35e62ef Author: jadebenn <jonahbenn@yahoo.com> Date: Tue Jan 30 18:49:46 2024 -0600 testing commit 9b7c593ae9bb6fe2da8b3e4401384e97b8339b1d Author: jadebenn <jadebenn@users.noreply.github.com> Date: Tue Jan 30 08:49:53 2024 -0600 Update CMakePresets.json commit 8a34544d0ea4d20b1092e71a84b7d93f3329f9a9 Author: jadebenn <jadebenn@users.noreply.github.com> Date: Tue Jan 30 08:44:29 2024 -0600 test moving flags to json commit b682f13fa930dde4276b9a935c4649eec31db5a3 Merge: 2239507d d78b5087 Author: jadebenn <jadebenn@users.noreply.github.com> Date: Mon Jan 29 22:49:29 2024 -0600 Merge branch 'DarkflameUniverse:main' into MSVCCompilerFlags commit 2239507d3c05cdf07d5d57156de2865021e18e3f Author: jadebenn <jadebenn@users.noreply.github.com> Date: Mon Jan 29 06:14:47 2024 -0600 Add MSVC optimization flags
Darkflame Universe
Introduction
Darkflame Universe (DLU) is a server emulator for LEGO® Universe. Development started in 2013 and has gone through multiple iterations and is now able to present a near perfect emulation of the game server.
LEGO® Universe
Developed by NetDevil and The LEGO Group, LEGO® Universe launched in October 2010 and ceased operation in January 2012.
License
Darkflame Universe is licensed under AGPLv3, please read LICENSE. Some important points:
- We are not liable for anything you do with the code
- The code comes without any warranty what so ever
- You must disclose any changes you make to the code when you distribute it
- Hosting a server for others counts as distribution
Disclaimers
Setup difficulty
Throughout the entire build and setup process a level of familiarity with the command line and preferably a Unix-like development environment is greatly advantageous.
Hosting a server
We do not recommend hosting public servers. Darkflame Universe is intended for small scale deployment, for example within a group of friends. It has not been tested for large scale deployment which comes with additional security risks.
Supply of resource files
Darkflame Universe is a server emulator and does not distribute any LEGO® Universe files. A separate game client is required to setup this server emulator and play the game, which we cannot supply. Users are strongly suggested to refer to the safe checksums listed here to see if a client will work.
Step by step walkthrough for a single-player server
If you would like a setup for a single player server only on a Windows machine, use the Native Windows Setup Guide by HailStorm and skip this README.
Steps to setup server
- Clone this repository
- Install dependencies
- Database setup
- Build the server
- Configuring your server
- Verify your setup
- Running the server
- User Guide
- Docker
Clone the repository
If you are on Windows, you will need to download and install git from here
Then run the following command
git clone --recursive https://github.com/DarkflameUniverse/DarkflameServer
Install dependencies
Windows packages
Ensure that you have either the MSVC C++ compiler (recommended) or the Clang compiler installed. You'll also need to download and install CMake (version CMake version 3.25 or later!).
MacOS packages
Ensure you have brew installed. You will need to install the following packages
brew install cmake gcc mariadb openssl zlib
Linux packages
Make sure packages like gcc
, and zlib
are installed. Depending on the distribution, these packages might already be installed. Note that on systems like Ubuntu, you will need the zlib1g-dev
package so that the header files are available. libssl-dev
will also be required as well as openssl
. You will also need a MySQL database solution to use. We recommend using mariadb-server
.
For Ubuntu, you would run the following commands. On other systems, the package install command will differ.
sudo apt update && sudo apt upgrade
# Install packages
sudo apt install build-essential gcc zlib1g-dev libssl-dev openssl mariadb-server cmake
Required CMake version
This project uses CMake version 3.25 or higher and as such you will need to ensure you have this version installed. You can check your CMake version by using the following command in a terminal.
cmake --version
If you are going to be using an Ubuntu environment to run the server, you may need to get a more recent version of cmake
than the packages available may provide.
The general approach to do so would be to obtain a copy of the signing key and then add the CMake repository to your apt. You can do so with the following commands.
# 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
Database setup
First you'll need to start MariaDB.
For Windows the service is always running by default.
For MacOS, run the following command
brew services start mariadb
For Linux, run the following command
sudo systemctl start mysql
# If systemctl is not a known command on your distribution, try the following instead
sudo service mysql start
You will need to run this command every time you restart your environment
If you are using Linux and systemctl
and want the MariaDB instance to start on startup, run the following command
sudo systemctl enable --now mysql
Once MariaDB is started, you'll need to create a user and an empty database for Darkflame Universe to use.
First, login to the MariaDB instance.
To do this on Ubuntu/Linux, MacOS, or another Unix like operating system, run the following command in a terminal
# Logs you into the MariaDB instance as root
sudo mysql
For Windows, run the following command in the Command Prompt (MariaDB xx.xx)
terminal
# 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
Now that you are logged in, run the following commands.
# 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.
GRANT ALL ON *.* TO 'mydarkflameuser'@'localhost' IDENTIFIED BY 'password' WITH GRANT OPTION;
FLUSH PRIVILEGES;
# Then create a database for Darkflame Universe to use.
CREATE DATABASE darkflame;
Build the server
You can either run build.sh
when in the root folder of the repository:
./build.sh
Or manually run the commands used in build.sh.
If you would like to build the server faster, append -j<number>
where number is the number of simultaneous compile jobs to run at once. It is recommended that you have this number always be 1 less than your core count to prevent slowdowns. The command would look like this if you would build with 4 jobs at once:
./build.sh -j4
Notes
Depending on your operating system, you may need to adjust some pre-processor defines in CMakeVariables.txt before building:
- If you are on MacOS, ensure OPENSSL_ROOT_DIR is pointing to the openssl root directory.
- If you are using a Darkflame Universe client, ensure
client_net_version
inbuild/sharedconfig.ini
is changed to 171023.
Configuring your server
This server has a few steps that need to be taken to configure the server for your use case.
Required Configuration
Darkflame Universe can run with either a packed or an unpacked client.
Navigate to build/sharedconfig.ini
and fill in the following fields:
mysql_host
(This is the IP address or hostname of your MariaDB server. This is highly likelylocalhost
)- If you setup your MariaDB instance on a port other than 3306, which can be done on a Windows install, you will need to make this value
tcp://localhost:portNum
where portNum is replaced with the port you chose to run MariaDB on.
- If you setup your MariaDB instance on a port other than 3306, which can be done on a Windows install, you will need to make this value
mysql_database
(This is the database you created for the server)mysql_username
(This is the user you created for the server)mysql_password
(This is the password for the user you created for the server)client_location
(This is the location of the client files. This should be the folder path of a packed or unpacked client)- Ideally the path to the client should not contain any spaces.
Optional Configuration
- After the server has been built there should be five
ini
files in the build directory:sharedconfig.ini
,authconfig.ini
,chatconfig.ini
,masterconfig.ini
, andworldconfig.ini
. authconfig.ini
contains an option to enable or disable play keys on your server. Do not change the default port for auth.chatconfig.ini
contains a port option.masterconfig.ini
contains options related to permissions you want to run your servers with.sharedconfig.ini
contains several options that are shared across all serversworldconfig.ini
contains several options to turn on QOL improvements should you want them. If you would like the most vanilla experience possible, you will need to turn some of these settings off.
Verify your setup
Your build directory should now look like this:
- AuthServer
- ChatServer
- MasterServer
- WorldServer
- authconfig.ini
- chatconfig.ini
- masterconfig.ini
- sharedconfig.ini
- worldconfig.ini
- ...
Running the server
If everything has been configured correctly you should now be able to run the MasterServer
binary which is located in the build
directory. Darkflame Universe utilizes port numbers under 1024, so under Linux you either have to give the AuthServer
binary network permissions or run it under sudo.
To give AuthServer
network permissions and not require sudo, run the following command
sudo setcap 'cap_net_bind_service=+ep' AuthServer
and then go to build/masterconfig.ini
and change use_sudo_auth
to 0.
Linux Service
If you are running this on a linux based system, it will use your terminal to run the program interactively, preventing you using it for other tasks and requiring it to be open to run the server.
Note: You could use screen or tmux instead for virtual terminals
To run the server non-interactively, we can use a systemctl service by copying the following file:
cp ./systemd.example /etc/systemd/system/darkflame.service
Make sure to edit the file in /etc/systemd/system/darkflame.service
and change the:
User
andGroup
to the user that runs the darkflame server.ExecPath
to the full file path of the server executable.
To register, enable and start the service use the following commands:
- Reload the systemd manager configuration to make it aware of the new service file:
systemctl daemon-reload
- Start the service:
systemctl start darkflame.service
- Enable OR disable the service to start on boot using:
systemctl enable darkflame.service
systemctl disable darkflame.service
- Verify that the service is running without errors:
systemctl status darkflame.service
- You can also restart, stop, or check the logs of the service using journalctl
systemctl restart darkflame.service
systemctl stop darkflame.service
journalctl -xeu darkflame.service
First admin user
Run MasterServer -a
to get prompted to create an admin account. This method is only intended for the system administrator as a means to get started, do NOT use this method to create accounts for other users!
Account management tool (Nexus Dashboard)
If you are just using this server for yourself, you can skip setting up Nexus Dashboard
Follow the instructions here to setup the DLU Nexus Dashboard web application. This is the intended way for users to create accounts and the intended way for moderators to approve names/pets/properties and do other moderation actions.
Admin levels
The admin level, or Game Master level (hereafter referred to as gmlevel), is specified in the accounts.gm_level
column in the MySQL database. Normal players should have this set to 0
, which comes with no special privileges. The system administrator will have this set to 9
, which comes will all privileges. gmlevel 8
should be used to give a player a majority of privileges without the safety critical once.
While a character has a gmlevel of anything but 0
, some gameplay behavior will change. When testing gameplay, you should always use a character with a gmlevel of 0
.
User guide
Some changes to the client boot.cfg
file are needed to play on your server.
Allowing a user to connect to your server
To connect to a server follow these steps:
- In the client directory, locate
boot.cfg
- Open it in a text editor and locate where it says
AUTHSERVERIP=0:
- Replace the contents after to
:
and the following,
with what you configured as the server's public facing IP. For exampleAUTHSERVERIP=0:localhost
for locally hosted servers - Next locate the line
UGCUSE3DSERVICES=7:
- Ensure the number after the 7 is a
0
- Launch
legouniverse.exe
, throughwine
if on a Unix-like operating system - Note that if you are on WSL2, you will need to configure the public IP in the server and client to be the IP of the WSL2 instance and not localhost, which can be found by running
ifconfig
in the terminal. Windows defaults to WSL1, so this will not apply to most users.
Updating your server
To update your server to the latest version navigate to your cloned directory
cd path/to/DarkflameServer
Run the following commands to update to the latest changes
git pull
git submodule update --init --recursive
Now follow the build section for your system and your server is up to date.
In-game commands
- A list of all in-game commands can be found here.
Verifying your client files
LEGO® Universe 1.10.64
To verify that you are indeed using a LEGO® Universe 1.10.64 client, make sure you have the full client compressed in a rar file and run the following command.
# 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
Below are known good SHA256 checksums of the client:
8f6c7e84eca3bab93232132a88c4ae6f8367227d7eafeaa0ef9c40e86c14edf5
(packed client, rar compressed)c1531bf9401426042e8bab2de04ba1b723042dc01d9907c2635033d417de9e05
(packed client, includes extra locales, rar compressed)0d862f71eedcadc4494c4358261669721b40b2131101cbd6ef476c5a6ec6775b
(unpacked client, includes extra locales, rar compressed)
If the returned hash matches one of the lines above then you can continue with setting up the server. If you are using a fully downloaded and complete client from live, then it will work, but the hash above may not match. Otherwise you must obtain a full install of LEGO® Universe 1.10.64. You must also make absolutely sure your LEGO Universe client is not in a Windows OneDrive. DLU is not and will not support a client being stored in a OneDrive, so ensure you have moved the client outside of that location.
Darkflame Universe Client
Darkflame Universe clients identify themselves using a higher version number than the regular live clients out there. This was done make sure that older and incomplete clients wouldn't produce false positive bug reports for us, and because we made bug fixes and new content for the client.
To verify that you are indeed using a Darkflame Universe client, make sure you have the full client compressed in a zip file and run the following command.
# 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
Known good SHA1 checksum of the Darkflame Universe client:
91498e09b83ce69f46baf9e521d48f23fe502985
(packed client, zip compressed)
Docker
The Darkflame Server is automatically built and published as a Docker Container / OCI Image to the GitHub Container Registry at:
ghcr.io/darkflameuniverse/darkflameserver
.
Compose
Warning
It seems that Docker Desktop on Windows with the WSL 2 backend has some issues with MariaDB (c.f. mariadb-docker#331) triggered by NexusDashboard migrations, so this setup may not work for you. If that is the case, please tell us about your setup in NexusDashboard#92.
You can use the docker-compose
tool to setup a MariaDB database, run the Darkflame Server and manage it with Nexus Dashboard all
at once. For that:
- Install Docker Desktop
- Open the directory that contains your LU Client
- If the
legouniverse.exe
is in a subfolder calledclient
, you're good to go. There may also be a folderversions
. - Otherwise, create a new
client
folder and move the exe and everything else (e.g.res
andlocale
) in there. This is necessary to work around a bug in the client that will prevent that you to log back in after getting disconnected.
- If the
- Download the docker-compose.yml file and place it next to
client
. - Download the .env.example file and place it next to
client
with the file name.env
- You may get warnings that this name starts with a dot, acknowledge those, this is intentional. Depending on your operating system, you may need to activate showing hidden files (e.g. Ctrl-H in Gnome on Linux) and/or file extensions ("File name extensions" in the "View" tab on Windows).
- Update the
ACCOUNT_MANAGER_SECRET
andMARIADB_PASSWORD
with strong random passwords.- Use a password generator like https://keygen.io
- Avoid
:
and@
characters - Once the database user is created, changing the password will not update it, so the server will just fail to connect.
- Set
EXTERNAL_IP
to your LAN IP or public IP if you want to host the game for friends & family
- Open a terminal in the folder with the
docker-compose.yml
andclient
- Run
docker compose up -d
- This might require
sudo
on Linux, and a recent version of docker compose
- This might require
- Run
docker exec -it dlu-darkflameserver-1 /app/MasterServer -a
and follow the instructions to create the initial admin account - Open http://localhost:8000 to access Nexus Dashboard with the admin account to create normal users
- Set
AUTHSERVERIP=0:localhost
inclient/boot.cfg
- Replace
localhost
with the value ofEXTERNAL_IP
if you changed that earlier. - Also make sure
UGCUSE3DSERVICES=7:
is set to0
- Replace
- Launch
legouniverse.exe
Standalone
This assumes that you have a database deployed to your host or in another docker container.
A basic deployment of this contianer would look like:
# 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
You will need to replace the /path/to/
's to reflect the paths on your host.
Any config option in the .ini
's can be overridden with environmental variables: Ex: log_to_console=1
from shared_config.ini
would be overidden like -e LOG_TO_CONSOLE=0
Development Documentation
This is a Work in Progress, but below are some quick links to documentaion for systems and structs in the server Networked message structs General system documentation
Credits
DLU Team
Research and Tools
Community Management
Logo
- Cole Peterson (BlasterBuilder)
Active Contributors
Former Contributors
- TheMachine
- Matthew
- Raine
- Bricknave
Special Thanks
- humanoid24
- pwjones1969
- Simon
- ALL OF THE NETDEVIL AND LEGO TEAMS!