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. |
||
|---|---|---|
| .github | ||
| external | ||
| scripts | ||
| src | ||
| tests/ClassicUO.UnitTests | ||
| tools | ||
| .editorconfig | ||
| .gitattributes | ||
| .gitignore | ||
| .gitmodules | ||
| ClassicUO.licenseheader | ||
| ClassicUO.sln | ||
| LICENSE.md | ||
| README.md | ||
An open source implementation of the Ultima Online Classic Client.
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.
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.
