Register for your free account! | Forgot your password?

Go Back   elitepvpers > MMORPGs > Flyff > Flyff Private Server
You last visited: Today at 18:31

  • Please register to post and access all features, it's quick, easy and FREE!

Advertisement



Rhisis - C# Emulator

Discussion on Rhisis - C# Emulator within the Flyff Private Server forum part of the Flyff category.

Closed Thread
 
Old   #1
 
elite*gold: 0
Join Date: May 2018
Posts: 43
Received Thanks: 104
Lightbulb [OPEN] Rhisis - C# Emulator

Hello everyone!



Some of you may know, that for some months now, I am working on a Fly For Fun emulator aiming to replace the official server files. At the begining, this project started on a different name, but as I was developing it, I notice some architecture/structure problems. In order to build a solid and efficient project, I started an other project with a better architecture and introduced other concepts never seen before in the history of FlyFF emulators.

Allow me to introduce you Rhisis.



What is Rhisis?

Rhisis is a Fly For Fun emulator project developed in C# and using the .NET Core Framework to target Windows and Linux systems.

This project has been started for learning purposes, to improve ourselfs, learn more about C#, the .NET Core Framework and the network and game logic problematics on the server-side.

Of course, we will do our best to make*Rhisis*as stable as the official files (or even better!). The goal is to create a community around this project, share ideas, contribute and improve ourselfs.


As I said in the previous lines of this topic, I have introduced new concepts and a better architecture. Almost all of the previous emulators we know about have an architecture based on the inheritance pattern and the actual game logic is located everywhere on the emulator.

So I've used another pattern introducing entities and individual systems that contains the game logic. Since every system is independant, if you create one system, it will not impact the others, so it will be easier to find and fix errors.



Note: this project is no way affiliated with the emulator developed by Akitasha and BBim in 2009. ��



Rhisis in details



Name of the project: Rhisis
Status: Open-Source
Hosted: GitHub
Environment: Visual Studio 2017
Language: C# 7
Framework target: .NET Core 2.0
Continuous Integration tool: Travis CI
Code review tool: Codacy
Database types: MsSQL / MySQL
External libraries used:
  • Entity Framework Core
  • Newtonsoft.Json
  • Ether.Network



Technical details about Rhisis



As I said in the beginning of this post, the emulator will have an evolutive architecture based on the Entity Component System.

The main goal of this architecture is to say that every object in the world is an Entity (player, monster, npc, etc...) et each of this entities can have one or more components attached to them.

A Component is just a simple object containing properties. For exemple, a component can be defined this way: AppearanceComponent, contains properties for the hair color, hair style, face style, etc...

Finally, the Systems is where the game logic will take place. Each system is independant and will have his own life cycle. For example, the "VisibilitySystem" will not interfer with the "InventorySystem" that will handle the player's inventory.

This new architecture is used in most of the recent games and will allow us to create a scalable and maintainable emulator. If we have a problem with visibility, we know where to look for errors.

About the database system, we use the Microsoft Entity Framework Core library combined with a generic repository pattern instead of using directly the DbSet collection.



Features



This is the features list Rhisis already provides :



Core
  • Logger
  • Rinjdael cryptography algorithm
  • Custom exception
  • Packet handler
  • Resource readers

Database
  • Multiple database support (MySQL and MsSQL)
  • Repository pattern

Login Server
  • Inter-Server authentication (ISC)
  • Client authentication process
  • Send server list to connected clients

Cluster Server
  • Inter-Server authentication (ISC)
  • Character list
  • Create character
  • Delete character
  • 2nd password verification
  • Join game

World Server
  • Inter-Server authentication (ISC)
  • Connection to the world
  • Visibility with other entities (Players, Monsters)
  • Mobility system (real time position calculation)
  • Chat system
    • Normal chat
    • Chat commands
      • Create item : /ci or /createitem
      • Teleport : /teleport
      • Create gold : /getgold
  • Inventory system
    • Move items
    • Equip/Unequip items
    • Save inventory
  • Trade system
  • Shop system
  • NPC Dialog system
  • Follow System
  • Battle System (Melee attack)
  • Drop System (When monsters die)
  • MailBox System (Thank you )
  • Experience system & Level Up
  • Death System and resurection
  • Pick Up drops
  • Drop items from inventory
  • Teleport system


Useful links

GitHub repository :

Cheers,
Eastrall
Eastrall is offline  
Thanks
9 Users
Old 05/17/2018, 10:10   #2

 
Blowa's Avatar
 
elite*gold: 48
Join Date: Jan 2010
Posts: 648
Received Thanks: 1,789
A nice project, easy to read & to understand.
Blowa is offline  
Old 05/17/2018, 11:15   #3
 
Kinami's Avatar
 
elite*gold: 10
Join Date: Mar 2010
Posts: 558
Received Thanks: 340
my dude.

Good job on everything
Kinami is offline  
Old 05/25/2018, 15:18   #4
 
elite*gold: 0
Join Date: May 2018
Posts: 43
Received Thanks: 104
Hi everyone !


There's some news about the project. We are almost done with the map instance and layer system and we will begin soon the IA system along with a little optimization of the entity management on each layers.

In fact, every layer will have a list of "monster regions" (those we find in the .rgn file) that will be active when the player's visibility range intersects the region. If there is no more players, we are thinking on disposing the region after 5 minutes with no players. This will help reducing the CPU consumption and avoid having to update monster's IA when there is no player around.

Cheers,
Eastrall
Eastrall is offline  
Thanks
2 Users
Old 06/15/2018, 17:56   #5
 
elite*gold: 0
Join Date: May 2018
Posts: 43
Received Thanks: 104
Hi everyone!

After a long time of thinking, I have finally started the IA system. The correct term in Rhisis context is "Behavior". In fact, each living entity in the world have a behavior.
For example, for a monster, his behavior would be to randomly move in his region, attack a player if he's attacked, run away in some cases, etc...

The behavior system is really flexible and allows you to create your OWN behaviors for a specific monster. Let's take an exemple for the Clockwork entity :

Code:
    /// <summary>
    /// Behavior for Clockwork. (MI_CLOCKWORK1)
    /// </summary>
    [Behavior(164)]
    public class ClocksworkBehavior : IBehavior<IMonsterEntity>
    {
        public void Update(IMonsterEntity entity)
        {
            // TODO: implement Clockwork's IA
        }
    }
In this code, we define a new class that inherits from the "IBehavior<T>" class. The "T" type should be an IEntity type, in our case, a IMonsterEntity.
Then, we just add the [Behavior] tag on top of the class. This attribute, defines this class as a behavior and you can specify the target mover id which will own this behavior. You can add the same behavior for multiple monsters, like:

Code:
[Behavior(20)] // small aibatt
[Behavior(21)] // normal aibatt
[Behavior(22)] // captain aibatt
public class AibattBehavior : IBehavior<IMonsterEntity>
{
    public void Update(IMonsterEntity entity)
    {
         // TODO: update aibatt's behavior
    }
}
It's up to you now to create some nice behaviors...


That's all for today!

Cheers,
Eastrall
Eastrall is offline  
Thanks
2 Users
Old 07/16/2018, 17:02   #6
 
elite*gold: 0
Join Date: May 2018
Posts: 43
Received Thanks: 104
Hello everyone !


Long time I didn't post here. I've done some progress with the behavior system. Now the monsters can move randomly in their spawn region and the NPC can now talk !
Little proof in image:





Next step will be to stabilize all this systems and finally start, the "BATTLE SYSTEM" along with skills and drop items

I also openned a community forum for the Rhisis project where we will post tutorials, share ideas and have a bug tracker. The idea behind this is to centralize all the information about the Rhisis project. Plus it will be useful when we will launch the beta server and have feedback from users.


Cheers,
Eastrall
Eastrall is offline  
Thanks
2 Users
Old 07/19/2018, 11:19   #7
 
elite*gold: 0
Join Date: May 2018
Posts: 43
Received Thanks: 104
DELETED
Eastrall is offline  
Old 07/31/2018, 15:50   #8
 
elite*gold: 0
Join Date: May 2018
Posts: 43
Received Thanks: 104
DELETED
Eastrall is offline  
Thanks
2 Users
Old 08/16/2018, 21:34   #9
 
elite*gold: 0
Join Date: May 2018
Posts: 43
Received Thanks: 104
Hello everyone !


Hope you are all OK ! There is some news about the project. Things are getting interesting!

Today, we had 3 Pull requests merged and 3 other are awaiting verification.

These are the merged changes:
- : Send messages to client when inventory is full
- : Add an extra parameter to the ChatCommand attribute. We can now specify the authority needed to execute the chat command
- : Disable 2nd password verification (boolean in configuration file)

- : Discussion about the friend system. We can actually send a friend request to an other player.
- : Correct the SendDefinedText method to send the correct text (and discussion about the formated text)
- : Global fixes from Skeatwin, our new colaborator on this project!

Many thanks to Yothri for the pull requests he has made today and hope his work will inspire others to contribute to Rhisis! Don't forget, Rhisis is an open-source project built by the FlyFF community for the FlyFF community.
Don't be afraid to contribute, if you do a mistake, we will help you solve it.


Cheers,
Eastrall
Eastrall is offline  
Thanks
2 Users
Old 08/19/2018, 20:51   #10
 
elite*gold: 0
Join Date: Aug 2018
Posts: 10
Received Thanks: 0
How tuned is the Packet Manager so far ?
AM-2201 #ADRENALINE is offline  
Old 08/20/2018, 10:28   #11
 
elite*gold: 0
Join Date: May 2018
Posts: 43
Received Thanks: 104
What do you mean by "Packet Manager" ? Do you mean the packet parsing when receiving a packet ?
Eastrall is offline  
Old 08/21/2018, 10:35   #12
 
elite*gold: 0
Join Date: Jul 2015
Posts: 159
Received Thanks: 71
Maybe he means how much packets are handled already? XD
Yothri is offline  
Thanks
1 User
Old 08/23/2018, 09:53   #13
 
elite*gold: 0
Join Date: May 2018
Posts: 43
Received Thanks: 104
Oh! Ok, didn't understand that. Well, I guess we handle ~30 packets for now. Including Login, Cluster and World servers.
Eastrall is offline  
Old 10/28/2018, 10:58   #14
 
elite*gold: 0
Join Date: May 2018
Posts: 43
Received Thanks: 104
Hello !

Long time I didn't post any news here... But, the project is not dead! We still developing slowly the emulator.
Lately, we have done some refactoring that increases performances and reduces CPU consumption.
We have also introduced a new way to handle monsters with the official regions and we are now ready to start implementing the FLYFF battle system with melee attacks and skills !

Also, system creation has been reviewed to create systems easily, there's an exemple of a system:
Code:
[System(SystemType.Notifiable)]
public class MySystem : ISystem
{
     // Specify the type of entities that can execute the system
     public WorldEntityType Type => WorldEntityType.Player;

     // Put your game logic here
     public void Execute(IEntity entity, SystemEventArgs e)
     {
     }
}
There you are, a new notifiable system.
Read more about it here:

Stay tuned, more informations to come...
Eastrall is offline  
Old 11/08/2018, 15:34   #15
 
elite*gold: 0
Join Date: May 2018
Posts: 43
Received Thanks: 104
Hello !


Quick news from the project! In PR monster can know chase the player when it gets attacked ! Also, when the player runs away and the monster is away from it original position, it returns to its original position and stops chasing the player.

This is a good base for the melee attacks from the monster that should arrive shortly!

Stay tuned !
Eastrall is offline  
Thanks
1 User
Closed Thread

Tags
emulator, flyff, opensource, project


Similar Threads Similar Threads
[Selling] Clockworks LVL 147 Forcemaster Billst +10 Speed Shield 36% Speed Heart of Rhisis
08/13/2015 - Flyff Trading - 4 Replies
Hi guys, i want to sell the following on EN server clockworks: #################### #################### ################## LIMITED OFFER:
[Release] Rhisis Dungeon Models Texturen
04/30/2014 - Flyff PServer Guides & Releases - 2 Replies
Huhu Da ich das hier eigentlich noch nicht gesehen habe ihr könnt mich gerne Korrigieren Release ich mal hier die Rhisis Dungeon Models und Texturen es sind 135 Objekte wenn ich mich nicht verzählt habe http://s1.directupload.net/images/140430/temp/59z sejx5.jpg Ich hoffe jeder weis wie man sie in den Beast/spiel einfügt falls nicht Schreibt es =) Download:https://mega.co.nz/#!1Fd3ySTB!9eCIyE8caC 4PQOGOeQRyXh2L1-p1MFDGGP9piJFoLLc
[Dev] Rhisis Project (Source)
04/28/2009 - Flyff Private Server - 9 Replies
http://img16.imageshack.us/img16/8074/banner4f.jpg German: Rhisis ist ein Flyff Emulator Project, das am 11.3.2008 gegründet wurde, es bassier auf Kiki's source, später wird es auf revision 37 von dflyff basieren. Founders: BiM and Akitasha Developers: BiM and Akitasha and GlaphanKing Shop DB/QA/Tester: Lettus Forum:



All times are GMT +1. The time now is 18:32.


Powered by vBulletin®
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
SEO by vBSEO ©2011, Crawlability, Inc.
This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.

Support | Contact Us | FAQ | Advertising | Privacy Policy | Terms of Service | Abuse
Copyright ©2025 elitepvpers All Rights Reserved.