Project Status - Easter 2020

I want to give a short status update on the OpenMU project.

I want to give a short status update on the OpenMU project.

Recap of 2019

As you may remember, I set some goals for 2020.

Stabilizing and getting the Network-NuGet out

I put some effort in solving some edge cases in the network code - primarily related to error handling and detecting disconnections. There have been some usages of obsolete System.IO.Pipeline functions, which I resolved.

Additionally, I improved the API of the network & packets API. There are now simple extension methods for IConnection to send specific packets. They're automatically generated by the packet definition XML files, too.

Last but not least, I released nuget packages on nuget.org, so that other applications can make use of this API.

Release of an updated Network Analyzer

TODO

Completion of the Quest System

I completed the first part of it. The old quest system with the level 150, 220, 380 and 400 quests was implemented and tested. I hope that I can implement the other quest system without much changes to the logic, but only by adding its data. Time will tell.

Getting other game features done

I started solving some gameplay issues and missing features:

From the community, I received some nice contributions of chat commands. Thanks for that!

Simplifying/Modularization of the server -> Public API

I implemented a basic public API. However, further modularizing the whole server architecture will take some more time and has not a high priority at the moment.

I think of implementing the "servers" as IHostedService which would run on a Generic Host. It would give us some nice built-in goodies, such as logging and dependency injection.

Other improvements

Blazor

One big change was the technological switch of the AdminPanel from React/Redux to server-side Blazor. The reasons for the change were:

  • Keeping most of the code in C#
  • Less and simpler code. React/Redux involves alot of boilerplate code which is sometimes hard to follow.
  • Being more productive. If I compare how much time I spent on react/redux and on blazor, I can say that I got more features done in blazor in less time.

One big improvement is now the ability to edit the server configuration and account data on the admin panel. Not only small parts of it, but every tiny bit. The user interface is dynamically generated by reflection. Not the fastest way, but you would be surprised how fast it is anyway. If performance of that is ever a problem, there are still ways to improve that.

There is still a lot of things to do in the AdminPanel:

  • General polishing, adding user-friendly field names and descriptions
  • Adding some kind of editors, also graphical ones (e.g. for gates of maps)
  • Adding authentication
  • Better error handling on generic edit pages which tells the user what went wrong.

Documentation generation

I implemented the automatic generation of packet documentation with a XSL transformation which takes the packet definition XMLs and transforms them to markdown files.

Additionally to that, I set up GitHub Pages with Jekyll, which takes these all documentation of the git repo folder docs and spits out html files. You can see a link to the documentation at the menu of this page.