Code Monkey home page Code Monkey logo

saltyemu's Introduction

SaltyEmu

forthebadgeforthebadge Discord

Description :

SaltyEmu is a software designed as a server emulator for the MMORPG Nostale. It's based on ChickenAPI and has an event driven architecture. SaltyEmu is an opensource project, made for fun and skill improvements, it will stay as is.

This project is no more maintained, I'm working on a private project that runs NosWings

Do not hesitate to study its code/architecture for learning purposes, there are a lot of good and bad designs

The new project (WingsEmu) is an upgrade of SaltyEmu with much more "entreprise-grade" architecture choices thanks to my recent studies

Some parts of WingsEmu might be put opensource

What I wanted to do :

  • Distributed Computing & Microservices oriented architecture
  • Stateless softwares
  • Fully tested project
  • Really powerful project (modular & pluggable)
  • Community Driven project

What have been done so far :

  • Distributed Computing can be done, on most of the things except game events (it needs to modify the network wrapper for that), simply because I didn't want to waste my time on it
  • Almost not tested project, except RelationService, the reason is that I've been changing quite a lot of things and this project was not intent to be that big right now.
  • Powerful project (We are using a lot of modern technologies, always keeping an eye on new and reviewing our old work)

What have failed so far :

  • Community Driven Project
    • That project is so big that it can not be written alone, but nostale scene is so cancerous that people do not understand why opensource is a good way to complete our achievements

Requirements

.NET Core SDK 2.1+

Docker

Technologies

Already using / supporting

  • Git
  • Docker
  • C#
  • MSSQL (should be dropped soon)
  • MongoDB (should be moved to a lighter DB soon)
  • Redis
  • Gitlab CI/CD
  • RabbitMQ (AQMP) / EMQX (MQTT) / Emitter (MQTT)

Incoming for future usage :

  • Protobuf (Marshaling tool)
  • gRPC (RPC Framework)
  • Envoy (Proxy & HTTP Load Balancer)
  • Kong or Istio (some kind of really powerful API Gateway for our microservices)
  • Vault (Credentials store)
  • Consul (Service Discovery)
  • VueJS (Potential SaltyEmu Admin interface)
  • Grafana

Content

Big features you might be interested in :

  • Command Framework (Easily plug your commands or help creating some new ones !)
  • Plugin Framework (However, it can be improved with IoC)
  • RPC Framework (Transport layer through MQTT, RabbitMQ, HTTP, whatever, it's abstracted enough for that)
  • Advanced IoC Usage (It still needs to be improved)
  • A lot of 3rd party wrappers (abstracted)
  • A lot of generic & abstracted reusable code (It's not because you are writing a project that you can not let a piece of code living its own life)
  • A lot of data about Nostale (mostly seeable in ChickenAPI)
  • A lot of reworks, rewrites (you can see that through commits)
  • Cool & modern technologies

Credits

Authors :

  • Blowa

Contributors :

  • Kraken (Big thanks for all the time you took to implement Nostale boring features...)
  • Zanou (Big thanks for all the time you took to implement Nostale boring features...)
  • Kiritsu
  • GodnessCookie
  • Quarry
  • Clavs
  • SylEze (For helping me when I was questioning myself about some architectural choices)

Special Thanks :

  • Z0ltar (Thanks for the algorithms you shared)
  • Quahu for your amazing work on [Qmmands] that we are using !
  • Eastrall (Thanks for your hints, discussions and feedbacks)
  • DarkyZ (Thanks for your feedbacks since the beginning of the project, you helped me a lot)
  • Elendan For the name of the emulator (Nos# then WingsEmu then AsyncSaltyWaatOnMicroService then finally SaltyEmu)
  • All people who supported my work, I never asked for donations or anything for SaltyEmu, just fun and some data & knowledge related help

Another type of thanks :

  • 0Lucifer0 (SaltyEmu wouldn't be that powerful if I didn't see how shitty are OpenNos & OpenNosCore)
  • Ciapa (I spent mhhhhhhhhhhhh 3 days reading your shitty BattlePacketHandler that killed my mind)
  • Cryless (File.AppendAllText("Thanks for disrespecting people's work and being a trash");)

Backlinks :

ChickenAPI (Nostale Private Server API) noswings.com (Maybe soon will be running SaltyEmu) elitepvpers presentation thread

saltyemu's People

Contributors

blowaxd avatar antoinecrb avatar kiritsu avatar noszanou avatar clavss avatar imquarry avatar zagith avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.