Skip to content
ClassicUO - an open source implementation of the Ultima Online Classic Client.
C# Other
  1. C# 99.7%
  2. Other 0.3%
Branch: master
Clone or download

Latest commit

Files

Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
.github/ISSUE_TEMPLATE Delete help-request.md Mar 31, 2020
src version Mar 25, 2020
.gitattributes + commit Sep 5, 2018
.gitignore Add necessary info and files to build+run on macOS Aug 25, 2019
.gitmodules Add fnalibs submodule Jun 26, 2018
ClassicUO.licenseheader Modified license header Oct 5, 2018
ClassicUO.sln please. Dec 17, 2019
FUNDING.yml Create FUNDING.yml Dec 15, 2019
README.md Update README.md Jan 13, 2020
appveyor.yml Update appveyor.yml Feb 3, 2020
packages.config + cleanup + layout Nov 20, 2018

README.md

An open source implementation of the Ultima Online Classic Client.

Individuals/hobbyists: support continued maintenance and development via the monthly Patreon:
  Patreon

Individuals/hobbyists: support continued maintenance and development via PayPal:
  PayPal

chat on Discord

Build status

Introduction

ClassicUO is an open source implementation of the Ultima Online Classic Client. This client is intended to emulate all standard client versions and is primarily tested against Ultima Online free shards. This client will not work on the official game shards at the moment.

The client is currently under heavy development but is functional. The code is based on the FNA-XNA framework. C# is chosen because there is a large community of developers working on Ultima Online server emulators in C#, because FNA-XNA exists and seems reasonably suitable for creating this type of game.

ClassicUO is natively cross platform and supports:

  • Windows
  • Linux
  • MacOS

Download & Play!

Follow the Wiki to setup correctly ClassicUO

Code building

Windows

The binary produced will work on all supported platforms.

You'll need Visual Studio 2019. The free community edition should be fine. Once that is installed:

  1. Open ClassicUO.sln in the root of the repository.

  2. Select "Debug" or "Release" at the top.

  3. Hit F5 to build. The output will be in the "bin/Release" or "bin/Debug" directory.

Linux

Open a terminal instance and put the following commands:

  1. sudo apt-get install mono-complete

  2. sudo apt-get install monodevelop

  3. Select "Debug" or "Release" at the top.

  4. Hit F5 to build. The output will be in the "bin/Release" or "bin/Debug" directory.

MacOS

All the commands should be executed in terminal. All global package installs should be done only if not yet installed.

  1. Install Homebrew, a package manager for macOS (if not yet installed): Follow instructions on https://brew.sh/

  2. Install Mono (https://www.mono-project.com/): brew install mono

  3. Install Paket, a dependency manager for .NET and mono projects (https://fsprojects.github.io/Paket/): brew install paket

  4. Navigate to ClassicUO root folder: cd /your/path/to/ClassicUO

  5. Initialize Paket environment: paket init

  6. Install required/missing dependencies: paket add Newtonsoft.Json --version 12.0.2

  7. Build:

  • Debug version: msbuild /t:Rebuild
  • Release version: msbuild /t:Rebuild /p:Configuration=Release
  1. Start ClassicUO via Mono (to properly set up all required constants use provided bash script):
  • Debug version: ./bin/Debug/ClassicUO-mono.sh
  • Release version: ./bin/Release/ClassicUO-mono.sh

Other useful commands:

  • msbuild /t:Clean
  • msbuild /t:Clean /p:Configuration=Release
  • msbuild /t:RestorePackages

Contribute

Everyone is welcome to contribute! The GitHub issues and project tracker are kept up to date with tasks that need work.

Legal

The code itself has been written using the following projects as a reference:

This work is released under the GPLv3 license. This project does not distribute any copyrighted game assets. In order to run this client you'll need to legally obtain a copy of the Ultima Online Classic Client.

Ultima Online(R) © 2020 Electronic Arts Inc. All Rights Reserved.

You can’t perform that action at this time.