I'd like to present you my project, SaltyEmu.
It's a modern MMORPG Emulator written in C# / Go for the game Nostale.
My goals :
- Bring a new eye on Nostale Private Server scene.
- Improving my software designing skills & implementation skills
- Help the real servers being highlighted by their work and remove all those shitty drag & drop servers that are designed to make money on developer's work.
GitHub :
Discord :
What are we looking for ?
We would like to know what you, server owners (real servers ones) are actually looking to add on your server which is a pain to do on OpenNos without changing everything in the base source (which is the most important lack of OpenNos to us)
How does SaltyEmu work ?
Actually, most of the packets are converted into abstracted events that will go through the event pipeline.
As well, there are a lot of micro services you can easily access to manage a lot of things (Sessions around the network, static data (.dat), instanciated data...)
The event pipeline is divided in two big parts :
- EventChecker : Filters event, based on checks, if a requirement check fails, the event is dropped from the pipeline
- EventHandlers : Handles the event, does the expected processing for the given event (like broadcasting a packet on a maplayer, adding item in an inventory...)
You can add as much handlers / checkers as you want to for 1 single event, through dynamically loaded plugins (stored in dynamic libs aka .dll)
Example :
A player send a "chat message"
It's converted to a ChatMessageEvent (we try as much as possible to factorize our code base)
ChatMessageEvent goes in every EventCheckers of the pipeline
Advantages of this architecture :
- Extreme pluggability (you can change the handling of an event during server's runtime)
- Easy Load Balancing (you can easily make one TCP listener that will throw event to handlers in a distributed software)
What we got so far :
- Command Framework (SaltyEmu.Commands & Essentials)
- MicroService Framework (MQTT)
- Family (MicroService)
- Friend / Blocked (Micro service)
- Multi channel
- Chat System
- Monsters & NPC's AI
- Battle
- NpcDialogs (still need to implement a lot of specific handling but really easy to add those)
- Guri Handling (same as NpcDialogs)
- Item Usage (same as NpcDialogs)
- Player Walking
- Shops
- Inventory
- Commands
- Items
- Portals
- Skills
- Specialists
- Groups
- Buffs
- Heavy documentation
What we will work on really soon :
- NosBazaar
- More documentation as there is already
- More tests (we try to handle the maximum of scenarios we can)
- Pets / Partners
- Scripting Instances (probably LUA or C# scripting)
Are you interested ?
We are always looking for contributors :
- Packets fixing (we have some missing informations actually)
- Feedbacks
If you find anything wrong in my thread, I would be glad if you could inform me, I wrote that fastly during my chinese course
PS : This is not a PoC, it has been running on our side since some months now, we reached a point where we'd like to have some external feedback.