Hello everybody,

I would like to introduce you CoreUO server. It is my experiment to write server from scratch. Don't see it as a competition, because it really isn't. Writing a server from scratch is very time consuming. For now it only allows to move with character. Every other actions results in a crash.

It still can be interesting for someone to see how packets are exchanged. There are some improvements in comparison with RunUO kind servers. All core features are isolated in own project without others referencing it. They are only joined together in launcher. This enables rapid development, because you compile only small amount of scripts at one time. Also it is useful for testing.

As you may know, I'm focused on Kingdom Reborn client. But the server can be easily modified to support any other client. It is written in newest .NET Core 3.1 and utilizes C# 8 features such as default interface methods, switch expressions, etc. I really take care to make the code understandable, so it may be a good point to learn new stuffs.

Anyway, if you are interested, look at https://github.com/coreuo/coreuo.
 
Interesting, I glanced around the code a bit and it's pretty well presented.

I like the idea of splitting core features into different assemblies, the only potential problem with that is circular dependencies.

Looks like a good foundation overall, if it gains the benefit of having a community and active contributors, being means-tested for a year or so, then I don't see why we can't aim to migrate from the RunUO/ServUO model to this in the future.

Good work IMO.
 
Thank you very much for your feedback.

I have encountered the circular dependency problem in the beginning. In order to prevent it, only launcher project can reference other projects and more important, all handlers (Handlers.cs) are made static. Under this condition, message project can pass packet to server project and server project can send packet back to message project. If the handler would not be static, but instance method, this would result in circular dependency.

I really like the idea you mentioned :) but I'm little bit skeptical. RunUO/ServUO are really huge projects, it will take massive amount of time to reach their quality, but who knows...
 
Back