Newbie Spellweaver
- Joined
- Aug 28, 2017
- Messages
- 13
- Reaction score
- 2
Hi,
I'd like to present you my project, SaltyEmu.
First of all, this thread is designed to people that are really interested in it.
If you just wanna trashtalk, leave the thread, it's pointless.
We are open to criticism as long as it will help the project growing.
Nothing you can compare to OpenNos or NosCore or any existing Emulator here, my project is totally different from those from goals to implementation.
My goals :
LINK : https://github.com/BlowaXD/SaltyEmu
Discord : https://discord.gg/7sTFU8d
How does SaltyEmu work ?
/*
A lot of better documentation incoming
*/
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)
- RPC Framework (MQTT / AQMP)
- Family (MicroService)
- Friends / 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 :
- 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)
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.
I'd like to present you my project, SaltyEmu.
First of all, this thread is designed to people that are really interested in it.
If you just wanna trashtalk, leave the thread, it's pointless.
We are open to criticism as long as it will help the project growing.
Nothing you can compare to OpenNos or NosCore or any existing Emulator here, my project is totally different from those from goals to implementation.
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 crappy drag & drop servers that are designed to make money on opensource developer's work.
LINK : https://github.com/BlowaXD/SaltyEmu
Discord : https://discord.gg/7sTFU8d
How does SaltyEmu work ?
/*
A lot of better documentation incoming
*/
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)
- RPC Framework (MQTT / AQMP)
- Family (MicroService)
- Friends / 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 :
- 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)
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.