[OpenSource] ChickenAPI - Next step in Nostale Private Server Emulation

05/06/2018 21:51 Blowa#1
[Only registered and activated users can see links. Click Here To Register...]

Dear Community,

I would like to present you ChickenAPI (what a strange name for Nostale content).

Discord : [Only registered and activated users can see links. Click Here To Register...]
Github : [Only registered and activated users can see links. Click Here To Register...]


What is ChickenAPI ?

ChickenAPI is, as its name contains, an opensource API that will permit people to have an interoperable code between all implementations that respect ChickenAPI.

I don't get the point, what does ChickenAPI ?

Simply, if you see Bukkit for Minecraft, ChickenAPI has the desire to be the Bukkit of Nostale.

What kind of features ChickenAPI provides ?
- Plugin System (easily create your own plugin that is interoperable with all server software that use ChickenAPI)
- Event System (easily register your plugins interaction with ChickenAPI's events)
- Heavy Documentation (All our work is under documentation written on a best effort basis)
- Community Driven (If you wanna request something that you think ChickenAPI is missing, just do it, it's opened to Pull requests / suggestions)
- ECS (A well known design pattern, that improves software modularity)
Basic Implementation provided (Most of the basic implementation are provided, however, you can use your own one !)
- Packets (We wrote all the packets we know so far in C#, with blazing fast Serializer & Deserializer)



Okay, it's an API, but who will be able to use it ?

Who ever that has a server software that support ChickenAPI.
NosCore will be using ChickenAPI.Packets
SaltyEmu is using all ChickenAPI components
Elendan's private fork of OpenNos will be using ChickenAPI.Packets

Since this API is totally opensource, we would like people to help us building the most interesting API for Nostale Servers.

Temporary thread design, we will go on a better presentation soon.
05/07/2018 14:33 CyberTale Studios#2
Great to see that there a people which make their own works.
You defenitly need more support dude!

Keep going
05/08/2018 00:46 Blowa#3
Quote:
Originally Posted by CyberTale Studios View Post
Great to see that there a people which make their own works.
You defenitly need more support dude!

Keep going
Funny, from a scammer that is dreaming about his own life.
05/16/2018 16:52 Blowa#4
Big update (not production ready tho) :
We started ECS (Entity component System)
Cleaned up
Added entities containers (IContext, IMap, IMapLayer, IServer...)

What is incoming :
More components / systems


To get an idea on how ChickenAPI's implementation is actually working on our side (NosWings team)
[Only registered and activated users can see links. Click Here To Register...]
Prometheus + Grafana : Metrics & Monitoring
Redis : Caching (many caches)
Fluentd : All Logging system
PostgreSQL : Database Storage
MessageQueues + gRPC : Inter Server Communication

Our World server : (no bullshit, it's nothing more than that + own plugins)
[Only registered and activated users can see links. Click Here To Register...]
(It's running on a Docker)

PacketHandling : Nos#.PacketHandlingPlugin - Basic Nostale Packet Handling (based on ChickenAPI's ECS to modify data structures / trigger events)
DataAccessLayer : Nos#.DatabasePlugin - ServiceStack.ORMLite wrapped for ChickenAPI
Session / ServerApi / Multilanguage services : Nos#.RedisPlugin - ServiceStack.Redis wrapped for ChickenAPI

A tutorial has been added to start create your own plugins, more informations are coming around the Plugin system.
05/25/2018 10:54 Blowa#5
Hello guys !

We are looking for some help !

As many of you may have noticed on our discord ([Only registered and activated users can see links. Click Here To Register...])

We would like to add all actually missing packets to ChickenAPI to have a good packet base to spend most of our time on game features.

Do not hesitate to come contributing with some pull requests ! :)


Regards,
ChickenAPI team.
06/03/2018 11:41 Blowa#6
Update !

What we added so far since last comment :
- Portals
- Npcs
- Monsters
- VisibilitySystem (thanks ECS)
- MapLayers
- Maps
- Algorithms
- Entities Movements
- Chat System (first, general chat & global chat, then, we will create a micro service for chat system (using RabbitMQ on our side))

What will be added soon :
- Inventory
- Skills (Casting / Learning..)
- Buffs
- Battle


Do not hesitate to follow our project :) !
06/04/2018 13:21 carlospok#7
Nice work!
06/24/2018 15:59 Blowa#8
We are reworking ECS for performance updates (mostly, the Tick system)

There is now a Nuget Package which is automatically updated from git repository (We do not update it manually)
[Only registered and activated users can see links. Click Here To Register...]

Every game basis are now prepared, we are just working on correct handling & packet answers.

Do not hesitate to join our Discord to stay tuned ;) !

Inventory is ongoing [Only registered and activated users can see links. Click Here To Register...]
08/03/2018 15:29 Blowa#9
Added (Not copy pasted from OpenNos and renamed it, I've written all those features from scratch respecting ChickenAPI & ECS principles :)) :

- Shops
- Crafts
- Buffs
- BCards
- Portals
- NPCs
- Monsters
- Skills
- Movement (Entities can now move, using the tick system)
- Tick System (You can configure Ticks for server refresh as well as ticks for Systems refreshs, using Env for server and overriding base system properties)
- Main Loop (to mainly use my mainthread and not using unmanaged fucked concurrency through unmanaged observables/threads/tasks)
- Events (There are now many game events available for plugins makers)

ECS is now mostly done using compile time properties definition instead of using GetComponent<T>() method calls which can create a big overhead while iterating over entities. (but still available)

I reworked many things so there is an entire Game Event feature for basic featured plugins (Motd plugin, Statistics Plugin...)

(non-exhaustive list)
NpcDialogEvent
WalkEvent
ShopBuyEvent
ShopSellEvent
PlayerConnectEvent
PlayerDisconnectEvent

And some more events...

I'm now working privately and i'll push once ChickenAPI will be stable since no one seems to pay any attention to WIPs projects :)


Reworks :
- ChickenAPI is now splitted over 4 projects :
- ChickenAPI.Core (contains every "Core" features, Network, Plugin, ECS, "Repo pattern", Logging, Abstracted InterServerCommunication...)
- ChickenAPI.Game.Enums (contains every Enums related to game)
- ChickenAPI.Game.Packets (Contains Packet Serialisation features, contains every packets, just the definition of those, without specific constructors like it is on GitHub)
- ChickenAPI.Game.Features (Contains every game features, Systems, Components, Entities, Game's DAL, Game's DTOs...)


PS : My "private" repository is still open to contributors as far as you can showoff your skills, a technical test (about C# and programming logic) will be necessary to gain access to it.
08/03/2018 15:54 Ortator#10
Quote:
Originally Posted by val77 View Post
Added (Not copy pasted from OpenNos and renamed it, I've written all those features from scratch respecting ChickenAPI & ECS principles :)) :

- Shops
- Crafts
- Buffs
- BCards
- Portals
- NPCs
- Monsters
- Skills
- Movement (Entities can now move, using the tick system)
- Tick System (You can configure Ticks for server refresh as well as ticks for Systems refreshs, using Env for server and overriding base system properties)
- Main Loop (to mainly use my mainthread and not using unmanaged fucked concurrency through unmanaged observables/threads/tasks)
- Events (There are now many game events available for plugins makers)

ECS is now mostly done using compile time properties definition instead of using GetComponent<T>() method calls which can create a big overhead while iterating over entities. (but still available)

I reworked many things so there is an entire Game Event feature for basic featured plugins (Motd plugin, Statistics Plugin...)

(non-exhaustive list)
NpcDialogEvent
WalkEvent
ShopBuyEvent
ShopSellEvent
PlayerConnectEvent
PlayerDisconnectEvent

And some more events...

I'm now working privately and i'll push once ChickenAPI will be stable since no one seems to pay any attention to WIPs projects :)


Reworks :
- ChickenAPI is now splitted over 4 projects :
- ChickenAPI.Core (contains every "Core" features, Network, Plugin, ECS, "Repo pattern", Logging, Abstracted InterServerCommunication...)
- ChickenAPI.Game.Enums (contains every Enums related to game)
- ChickenAPI.Game.Packets (Contains Packet Serialisation features, contains every packets, just the definition of those, without specific constructors like it is on GitHub)
- ChickenAPI.Game.Features (Contains every game features, Systems, Components, Entities, Game's DAL, Game's DTOs...)


PS : My "private" repository is still open to contributors as far as you can showoff your skills, a technical test (about C# and programming logic) will be necessary to gain access to it.
Sounds fine, maybe you can show something in a form of a video? (Im interesset). Good luck at the future :).
08/03/2018 16:23 Blowa#11
Quote:
Originally Posted by Ortator View Post
Sounds fine, maybe you can show something in a form of a video? (Im interesset). Good luck at the future :).
Thanks,
At the moment, I don't have time to make a video (I'm working every days and I spend the most of my free time working on Go, playing some video games and working on ChickenAPI), anyway, I'll try to do one as soon as I do have some more features :
- Battle
- Completely finished inventory
08/03/2018 23:25 DeadBoy83#12
I do not really understand what it is for, but it seems interesting. Can you tell me what it will do for you?
08/04/2018 09:10 Blowa#13
Quote:
Originally Posted by DeadBoy83 View Post
I do not really understand what it is for, but it seems interesting. Can you tell me what it will do for you?
If you are not a programmer, it's not really interesting for you :)

Beside that, I've got my own emulator running with ChickenAPI, SaltyEmu, which is more interesting for people that are not programming since it's a "Drag & Drop" server, using plugins to create the gameplay. :)
08/04/2018 14:41 BlackoutŠ#14
Discordlink is not working :( Can you send a new?
08/05/2018 09:51 Blowa#15
Quote:
Originally Posted by BlackoutŠ View Post
Discordlink is not working :( Can you send a new?
I've deleted it since no one pays attention to WIPs projects that are not OpenNos obviously. (Because they can't actually have Drag'n'Drop on ChickenAPI without developing or leeching someone's work)

Anyway, if you are still interested to contribute, as told in my prev messages, we are looking for motivated persons but you need to pass a technical test about C# and programming logic mostly.

If you pass that test, you will be able to work with us on SaltyEmu and ChickenAPI.

However, we will be releasing most of our work on GitHub once stable and production ready.