The first Lineage 2 authorization server written on the cross-platform .NET platform. The current implementation fully matches the functionality of the base version of L2J from the aCis project, revision 409.
What was implemented, step by step:
- The source code was completely rewritten from Java to .NET.
- To expand functionality and enable debugging, support for the SSH tunnel (Linux only) was implemented for the database connection manager.
- The code was completely rewritten from “threads” to “async/await”.
- The network packet generation model was rewritten to use pools of already cached packet objects.
- A telemetry service has been added to collect detailed information about application operation. This is necessary for full status monitoring and understanding the causes of unstable operation.
- A supervisor agent was implemented for real-time server operation monitoring (a simplified version of telemetry).
- Code refactoring and rethinking of core object implementations that have remained unchanged since the inception of L2J. Primarily, separating large static data and methods into static classes to reduce object initialization time and memory allocation.
- Other code changes that reduce memory allocations for arrays/objects and reduce the load on the garbage collector.
After final code polishing and testing with the login server stress test utility, work will begin on writing the game server. Considering that the login server also contains a basic set of tools for the game server, this programming approach will save a lot of time on future optimization.
A complete rewrite of the login server code took me about two weeks of pure work. Subsequent optimizations took four months (I had to read a lot about the features and optimizations of the .NET platform).



