No description
Find a file
Max Kellermann e64233adbc NetClient: use ReadAsync()
Call ReadAsync() in a loop instead of calling Read() only when data is
available.  This allows detecting if the connection was closed by the
server.  Previously, this was only ever detected if Send() fails, but
if no data gets sent, we never learn about the disconnect.

For example, if the server closes the connection during AccountLogin,
the "Verifying Account" screen is stuck with no visual feedback.  This
is because the disconnect was never detected, but also because the
LoginScene does not check for disconnects.  The former is fixed by
this patch (a "Disconnected" warning gets logged), but the LoginScene
is still buggy.
2024-12-20 15:22:05 -08:00
.github README, .github: remove donation links (#5) 2024-06-07 17:10:18 -07:00
external master 2024-04-01 22:53:25 +02:00
scripts removed unused flag 2024-12-18 17:22:38 -08:00
src NetClient: use ReadAsync() 2024-12-20 15:22:05 -08:00
tests/ClassicUO.UnitTests fix tests 2024-12-18 17:14:53 -08:00
tools
.editorconfig
.gitattributes
.gitignore Gitignores ClassicUO.sln.DotSettings 2024-09-15 17:22:16 -07:00
.gitmodules
ClassicUO.licenseheader
ClassicUO.sln anycpu 2024-04-01 22:51:55 +02:00
LICENSE.md 2024 2024-12-18 18:51:24 -08:00
README.md README, .github: remove donation links (#5) 2024-06-07 17:10:18 -07:00

An open source implementation of the Ultima Online Classic Client.

chat on Discord

GitHub Actions Status GitHub Actions 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.

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.

screenshot_2020-07-06_12-29-02

ClassicUO is natively cross platform and supports:

  • Browser [Chrome]
  • Windows [DirectX 11, OpenGL, Vulkan]
  • Linux [OpenGL, Vulkan]
  • macOS [Metal, OpenGL, MoltenVK]

Download & Play!

Platform Link
Browser Play!
Windows x64 Download
Linux x64 Download
macOS x64 Download

Or visit the ClassicUO Website

How to generate a release build

git clone --recursive https://github.com/ClassicUO/ClassicUO.git
cd ClassicUO/scripts
bash build-naot.sh

Binaries available in bin/dist folder

Warning

To execute .sh scripts on Windows, use Git Bash which can be installed with Git itself: https://git-scm.com/download/win

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:

Backend:

This work is released under the BSD 4 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. Using a custom client to connect to official UO servers is strictly forbidden. We do not assume any responsibility of the usage of this client.

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