baseline: OpenMU upstream b5a0961 (fresh source)
This commit is contained in:
131
README.md
Normal file
131
README.md
Normal file
@@ -0,0 +1,131 @@
|
||||
# OpenMU Project
|
||||
|
||||
[](LICENSE)
|
||||
[](https://www.codacy.com/gh/MUnique/OpenMU/dashboard?utm_source=github.com&utm_medium=referral&utm_content=MUnique/OpenMU&utm_campaign=Badge_Grade)
|
||||
[](https://deepwiki.com/MUnique/OpenMU)
|
||||
[](https://discord.gg/2u5Agkd)
|
||||
|
||||
| Platform |Build Status |
|
||||
|----------------|----------------------|
|
||||
| Windows |  |
|
||||
| Linux (Docker) | [](https://hub.docker.com/r/munique/openmu) |
|
||||
|
||||
| NuGet Packages | |
|
||||
|----------------|---|
|
||||
| MUnique.OpenMU.Network | [](https://www.nuget.org/packages/MUnique.OpenMU.Network/) |
|
||||
| MUnique.OpenMU.Network.Packets | [](https://www.nuget.org/packages/MUnique.OpenMU.Network.Packets/) |
|
||||
|
||||
This project aims to create an easy to use, extendable and customizable server
|
||||
for a MMORPG called "MU Online".
|
||||
The server supports multiple versions of the game, but the main focus is
|
||||
version of Season 6 Episode 3 using the ENG (english) protocol. Additionally,
|
||||
the long-term focus is on the [open source client](https://github.com/sven-n/MuMain)
|
||||
which supports a slightly extended network protocol.
|
||||
However, parts of the software can also be suitable for the development of
|
||||
other games, even for other kind of games.
|
||||
|
||||
The code is a complete rewrite from scratch - it's not based on pre-existing
|
||||
projects, and it's also explicitly not based on decompiled server sources or
|
||||
their countless derivates.
|
||||
|
||||
There also exists a [blog](https://munique.net) which may contain some valuable
|
||||
information about this development.
|
||||
|
||||
## Current project state
|
||||
|
||||
This project is currently under development without any release.
|
||||
You can try the current state by using the available docker image, also
|
||||
mentioned in the [quick start guide](QuickStart.md).
|
||||
|
||||
## Licensing
|
||||
|
||||
This project is released under the MIT license (see LICENSE file).
|
||||
|
||||
## Used technologies
|
||||
|
||||
The project is mainly written in C# and targets .NET 10.0.
|
||||
|
||||
The servers admin panel is hosted on an embedded ASP.NET Core webserver (Kestrel)
|
||||
and implemented as Blazor Server App.
|
||||
|
||||
At the moment the persistence layer uses the [Entity Framework Core](https://github.com/aspnet/EntityFrameworkCore)
|
||||
and [PostgreSQL](https://www.postgresql.org) as database. Additionally, it's
|
||||
also possible to start it in a non-persistent in-memory mode.
|
||||
|
||||
The project is prepared to be hosted in a single process or distributed in multiple processes.
|
||||
For the communication between the processes, we use [Dapr](https://dapr.io/).
|
||||
|
||||
## Deployment
|
||||
|
||||
We provide Docker images and docker-compose files for easy deployment.
|
||||
Please take a look at the deploy-folder of this project.
|
||||
|
||||
## Contributions
|
||||
|
||||
Contributions are welcome if they meet the following criteria:
|
||||
|
||||
* Language is english.
|
||||
|
||||
* Code should be StyleCop compliant - this project uses the [StyleCop.Analyzers](https://www.nuget.org/packages/StyleCop.Analyzers/)
|
||||
for VS2022 so you should see issues directly as warnings.
|
||||
|
||||
* Coding style (naming, etc.) and quality should fit to the current state.
|
||||
|
||||
* No code copied/converted from the well-known decompiled source of the
|
||||
original server.
|
||||
|
||||
If you want to contribute, please create a new issue for the feature or bug (if
|
||||
the issue doesn't exist yet) so we can see who is working on something and can
|
||||
discuss possible solutions. If it's a small thing, you can also just send a
|
||||
pull request without adding an issue.
|
||||
|
||||
Apart of that, contributions from non-developers are welcome as well. You can
|
||||
test the server, submit issues or suggestions, packet descriptions or
|
||||
documentations about the concepts and mechanics of the game itself. Please use
|
||||
markdown files/syntax for this purpose.
|
||||
|
||||
If you have questions about that, don't hesitate to ask in our [discord channel](https://discord.gg/2u5Agkd)
|
||||
or by submitting an issue.
|
||||
|
||||
## How to contribute code
|
||||
|
||||
If you want to contribute code, please do the following steps:
|
||||
|
||||
1. fork this project from the original MUnique OpenMU Project.
|
||||
2. create a feature branch from the master branch
|
||||
3. commit your changes to your feature branch
|
||||
4. please test your changes, don't send AI generated code without testing it yourself
|
||||
5. submit a pull request to the original master branch
|
||||
6. wait for the code review and merge :)
|
||||
|
||||
## How to use
|
||||
|
||||
Please have a look at the [quick start guide](QuickStart.md).
|
||||
|
||||
## Gameplay differences to the original server
|
||||
|
||||
This project doesn't have the goal to copy the original MU Online server
|
||||
behavior to 100 %. This is not entirely possible, because the original server
|
||||
is written in another programming language and has a completely different
|
||||
architecture.
|
||||
With some points we make our life easier in this project, with other points we
|
||||
try to improve the gameplay.
|
||||
|
||||
### Calculations
|
||||
|
||||
The calculations of attribute values (like character damage decrement etc.) are
|
||||
done with 32 bit float numbers and without rounding off, like the original
|
||||
server does at some places.
|
||||
E.g. distributed stat points always have effect, while in the original server
|
||||
effects might get rounded down. For example, when 4 points of strength gives 1
|
||||
base damage, the original server doesn't calculate a fraction of 1 damage for
|
||||
3 points, while OpenMU calculates 0.75 damage. This damage
|
||||
has then an effect in further calculations.
|
||||
|
||||
### Countdown when changing character or sub-server
|
||||
|
||||
The original server uses a five second countdown when a player wants to change
|
||||
his character or the sub-server. Maybe this was done for some performance
|
||||
reasons, as the original server would then save the character/account data.
|
||||
We think that's really annoying and see no real value in that, so we don't use
|
||||
a countdown.
|
||||
Reference in New Issue
Block a user