SphereUO aims to enhance Ultima Online mechanics across different eras while providing extensive customization through its scripting language (SCP).
- Core changes based on ERA or custom.
- Bug fixes and substantial internal behavior improvements.
- Refactoring of some behaviors to be more UO standards based on era
- Windows:
libmariadb.dll
(MariaDB Client v10.* package), found inlib/bin/*cpu_architecture*/mariadb/libmariadb.dll
. - Linux: MariaDB Client library. Install it from MariaDB website or your distribution's repositories.
- MacOS: Install MariaDB Client library via
brew install mariadb-connector-c
.
Ensure you have a recent compiler (Visual Studio 2015 Update 3 or later, GCC 7.1 or later, Clang 6 or greater) as C++17 features are used. Build Makefiles or Ninja files with CMake for both Linux (GCC) and Windows (MSVC and MinGW).
Example for building makefiles on Linux for a 64-bit Nightly version:
mkdir build
cmake -DCMAKE_TOOLCHAIN_FILE=cmake/toolchains/Linux-GNU-x86_64.cmake -G "Unix Makefiles" -DCMAKE_BUILD_TYPE="Nightly" -B ./build -S ./
Use make -jX to speed up compilation with X threads.
make -jX -C build
Enable Address Sanitizer (ASan) and Undefined Behaviour Sanitizer (UBSan) with the ENABLE_SANITIZERS checkbox via GUI or -DENABLE_SANITIZERS=true via CLI.
Retrieve ASan output by launching Sphere from cmd or shell:
SphereSvrX64_nightly > Sphere_ASan_log.txt 2>&1
- Test code before committing.
- Prefer rebasing over pulling to avoid unnecessary "merge branch master" commits.
- Preserve backwards compatibility when removing/changing/adding features.
- Comment code for better understanding.
- Use Sphere's custom datatypes and string formatting macros.
- Prefer C-style casts for numeric types.
- Use signed 64-bit integers for values intended to be printed or retrieved by scripts.
- Prefix pointer variables with "p".
- Prefix unsigned variables with "u".
- Prefix boolean variables with "f" (flag).
- Classes should have uppercase first letters and prefix "C".
- Private/protected methods and members of a class or struct should have the prefix "_".
- Constants should have the prefix "k" (static const class members).
- Use prefixes: "i" (integer), "b", "w", "dw" for byte, word, and dword respectively.
- Use prefixes "r" for float and double.
- Use prefixes "c", "wc", "tc" for char, wchar, tchar.
- Prefer "lpstr", "lpcstr", "lpwstr", "lpcwstr", "lptstr", "lpctstr" aliases.
- Use "s" or "ps" (if pointer) when using CString or std::string.
- Indent with spaces of size 4.
- Use Allman indentation style.
- Sphereserver team and community