GithubHelp home page GithubHelp logo

classicuo / classicuo Goto Github PK

View Code? Open in Web Editor NEW
535.0 29.0 312.0 127.2 MB

ClassicUO - an open source implementation of the Ultima Online Classic Client.

Home Page: https://www.classicuo.eu

License: Other

C# 99.75% HLSL 0.17% Batchfile 0.01% Shell 0.08%
ultima-online games cross-platform fna-xna classicuo opengl directx-11 vulkan

classicuo's Introduction

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

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.

classicuo's People

Contributors

3hmonkey avatar aclark13 avatar alias-alan avatar andreakarasho avatar anethus avatar binff04 avatar brndd avatar broxen avatar darklotus avatar deccer avatar dissident76 avatar hezkore avatar jaedan avatar jakublinhart avatar jkachhad avatar markdwags avatar paezao avatar plugtopus avatar rdegelo avatar roxya avatar saschakp avatar sghirate avatar stallind avatar tannerbist avatar therightstatement avatar tonyuo avatar ultima-tony avatar uniphix avatar voxpire avatar zolter avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

classicuo's Issues

ClassicUO fails to load if you're missing an anim*.idx file

With the installation of UOR, the following files exist:

  • anim.idx
  • anim4.idx
  • anim5.idx

In Animation.cs, lines 140-149 assume that you have anim, anim2, anim3, anim4, and anim5.

Steps to reproduce the behavior:

  1. Delete/rename of of the anim*.idx files
  2. Run ClassicUO
  3. Observe error

Expected behavior
ClassicUO can handle data directories that don't come with all of the anim* files.

Desktop (please complete the following information):

  • OS: Win10
  • Version: master branch, 5.0.8.3 of client from UOR

Test Issue

Describe the bug
A clear and concise description of what the bug is.

To Reproduce
Steps to reproduce the behavior:

  1. Go to '...'
  2. Click on '....'
  3. Scroll down to '....'
  4. See error

Expected behavior
A clear and concise description of what you expected to happen.

Screenshots
If applicable, add screenshots to help explain your problem.

Desktop (please complete the following information):

  • OS: [e.g. iOS]
  • Browser [e.g. chrome, safari]
  • Version [e.g. 22]

Additional context
Add any other context about the problem here.

overhead text message wrong Y

Describe the bug
when a mobile has a text over head and it turns, the text change Y.

To Reproduce
log with original client.
log with another account with ClassicUO.
with original client write and turn pg.
see results into ClassicUO.

Expected behavior
text should be at the same Y. The difference now is too big.

Screenshots
none

Desktop (please complete the following information):
none

Additional context
none

Gump - Skill

Describe the solution you'd like
Skill Gump needs to be implemented. First skill gump will be (one of two different) an advanced one with some additional features.

Memory leak

Describe the bug
after a while memory usage increase 2x.
VS says it's a fault of SpriteVertex. WTF???!?

To Reproduce
run around the world 🗡

Expected behavior
memory should be around 250mb.

Screenshots
none

Desktop (please complete the following information):
none

Additional context
none

Anchor-System (for gumps)

Describe the solution you'd like
Anchor system for gumps (for example health bars, spellbars etc.) needs to be implemented.

Wrong maxheight calculation for Luna

Describe the bug
My char is not drawn when im on Luna near a wall (not every).
There is something wrong into
CheckIfUnderEntity in GameScene.cs

Screenshots
image

UltimaLive support on the client

This is a feature one would like to see, especially RPG and Custom servers, reporting from the runuo server (not linking for future reference):

Introduction

The purpose of UltimaLive is to allow a shard to edit its maps while the game is running, stream those changes to its players in realtime, and use more than six map files.

Map Editing and Streaming

UltimaLive provides shard developers the ability to alter maps without the hassle of redistributing map files to their entire player base. This gives shard developers the possibility of scripting events that make changes to the game maps while the shard is running. e.g. If a shard wanted to simulate having a meteor crash into the terrain for example, they could script in the effects and actually make a crater in the map.

UltimaLive allows shard administrators the ability to edit the terrain and statics in realtime and see those changes immediately. Items can be frozen into the map while the game is running and the maps stored on the players computer are automatically updated when they get near the changed part of the map.

Players are not required to download shard maps at all if they would like to stream all the maps. On the other hand, shards can still distribute maps to their players and in that case players would only be sent parts of the map that have changed since the maps were released. They would only be streamed those changes when they came into contact with the part of the map that had changed.

Additional Maps

The regular Ultima Online client supports six map files. While shards can currently use those six map files to make as many logical maps (copies of a map file) as they want, all the logical maps will look the same.

UltimaLive allows shards to use more than the regular six map files. They can create upwards of 200 additional unique maps, which means the possibility for expansion has been greatly enhanced.

If shards only want the ability to use additional maps and not stream changes, the streaming can be disabled. Additional Maps have the limitation of being the same size (same number of blocks) or less than the post-ML Fel and Tram maps.

Limitations
The following are limitations of this system:

UltimaLive only works with the classic client at this time.
UOP Maps must have the same number or fewer blocks than the regular Felucca map.
Map diff files are not used by this system
There is no provision for wrapping in the boat system. Please explore this and post results.

System Requirements as in original client

Tested with various clients upto and including 7.0.30.3 (on the igrping 0.98 with that client)
Supports Windows XP**, Vista*, Windows 7, and Windows 8*, Windows 10

** Testing has been done on Vista and 8 and it currently works on those systems*

** Microsoft is no longer supporting Windows XP. UltimaLive has been tested on XP, but development going forward will not be tested on XP.

(On Windows 7 this is typically located at c:\ProgramData\UltimaLive\ShardIdentifer)
Maps, when in UltimaLive, are stored in ProgramData\UltimaLive\shardidentifer for windows 7. (Windows XP uses a different location for its app data)

https://www.youtube.com/watch?v=XNwPNNl8hgA

https://www.youtube.com/watch?v=LM4xK-5eAVs

here is the link of the SERVUO current state of the art of the system and it's current implementation:

https://www.servuo.com/archive/ultimalive.687/

UltimaLive GITHUB Repository

Gump - Buy/Sell

Describe the solution you'd like
Buy/Sell-Gump needs to be implemented.

Milestone 0.0.1.0 Cleanup

Describe the solution you'd like
in order to release Milestone 0.0.1.0 a cleanup should be done. That means remove all unused namespaces, delete unused comments and code, commenting functions for documentation propose and so on. TIP: Use Resharper for this!

Everyone of us will get one special task doing this.

Light sources

Describe the solution you'd like
Light sources need to be implemented.

Viewport Window

Is your feature request related to a problem? Please describe.
Nope

Describe the solution you'd like
The viewport should be rendered in its own window as original client is doing. It should also be resizable.

grafik

Change draw method for UI

With the scrollarea addon we need to clip the controls inside it, if these are on top or bottom of the scrollarea bounds.
This is only a visual effect.

Gump - Journal

Describe the solution you'd like
Journal Gump needs to be implemented.

Rework the drawing order algorithm

At the moment ClassicUO is using the same algorithm of UltimaXNA.
It adds a deferred entity over its base entity to avoid tile overlapping.
Each entity on a tile is sorted by its importance (effect > mobile > item > static > tile).

We need to write a better algorithm than this.

Service Pattern

Describe the solution you'd like
Whenever we have a scenario where one class is providing some functionality and another class want to use this functionality, the simplest way to achieve this would be to instantiate the class providing the service to another class and use it.
So the service pattern should be the right solution for this. In this case that means that there will be a stack out of singleton services which will be initialized on game startup.
Examples of services are:

  • Console/Logger
  • Input (for key handling)
  • SpriteBatch3d
  • SpriteBatchUI
  • Network
  • Audio
  • ...

version releases

Hey great work on this client.

would be great to have version releases for windows so people can download and test the client

regards

Gump - Status

Describe the solution you'd like
Status Gump needs to be included.

Vector3 improvement

Describe the solution you'd like
Vector3 needs an inprovement (to point).

Launcher for ClassicUO

Is your feature request related to a problem? Please describe.
Nope

Describe the solution you'd like
The client should be started by using a launcher application. I suggest using the one I created some time ago. It is using a one file NoSQL-database (because of different shard and user profiles). Its very easy to work with that. Maybe we can also think about swapping from settings.json to that db.

Additional context

grafik

Game crashes when open some paperdoll

As above.

I think there are some gumps issues when PaperdollGump try to gets bodies and items on layers.

Atm no idea which kind of gump causes this crash.

Gump - Trading

Describe the solution you'd like
Trading-Gump needs to be implemented.

Adjust gump size

Describe the bug
Server sends gump more larger than local image.

image

Some animation status is wrong

Describe the bug
For some mobiles you see a different animation. Ex: mobile is staying, but animations is not staying 💃

Screenshots
image

Gump - Paper Doll

Describe the solution you'd like
Paper Doll Gump needs to be implemented. This is one of the hardest.

Mobile mount height

Describe the bug
There is a glitch with some mounts: mobile is sitting over the hair. Some mobile that has a mount requires a different Y.

To Reproduce
none

Expected behavior
A clear and concise description of what you expected to happen.

Screenshots
none

Desktop (please complete the following information):
none

Additional context
none

Gump - Mini Map

Describe the solution you'd like
Mini Map needs to be included.

Contribute

Hey... I see that you are actively working on this project and I wonder if I can contribute? I played Ultima Online for more than 10 years, I don't play anymore but would be nice to work in such a project.

Let me know, thanks!

ClassicUO fails to open if you don't have 6 map#.mul files

Describe the bug
ClassicUO requires 6 map files, but for UOR at least, it only had 1 map file (map0.mul).

To Reproduce
Steps to reproduce the behavior:

  1. Remove all your maps except map0.mul
  2. Run ClassicUO
  3. See error

The error happens in Map.cs, and if MAP_COUNTS is set to 1, and MapsDefaultSize is set to just one size, it will continue to load.

Expected behavior
ClassicUO should allow 1-6 map files and continue to load.

Desktop (please complete the following information):

  • OS: Win10
  • Version: UOR 5.0.8.3

Additional context
Add any other context about the problem here.

Project build error

hello, readme.md file does not implement the project can not accomplish the compilation. I'm constantly experiencing different mistakes. Visual Studio 2013 - 2015- 2017. What do I need to install? I would appreciate it if you could help with the compilation. Thank you.

Sounds!

Needed to implement all sounds system:

  • from uo files
  • good classes to handle sounds
  • apply sounds when necessary

GumpControl draw

Describe the solution you'd like
GumpControl draw methode needs a reengineering.

Buy/Sell-System

Describe the solution you'd like
Buy/Sell-System needs to be implemented.

Gump Implementation

Is your feature request related to a problem? Please describe.
Nope

Describe the solution you'd like
Gumps should be implemented. Please add all information you have about this and how the gump framework is working.

Gump - Health

Describe the solution you'd like
Health-Bar-Gump for players and mobiles needs to be implemented.

Text overlap

Describe the solution you'd like
Selectable test should be added + check if test overlaps another one. If true then add a transparancy to the text behind

Managing Versions

Is your feature request related to a problem? Please describe.
Nope

Describe the solution you'd like
We should add versioning to the Client. Means there should be a version management inside the application itself. Example: https://msdn.microsoft.com/en-us/library/ms973869.aspx

It makes sense to do something like: Release.Beta.Alpha.Build

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.