SharpFly - C# FlyFF-Emulator

Status
Not open for further replies.
Newbie Spellweaver
Joined
Oct 4, 2015
Messages
17
Reaction score
5
Kaev - SharpFly - C# FlyFF-Emulator - RaGEZONE Forums

Hiho!
Welcome to SharpFly - A FlyFF v15 emulator entirely written from scratch.
The project itself isn't very advanced yet, but i try to push all new additions every 2-3 days into the GitHub repository.

I created the project for learning purposes and just for fun. It's not made to replace any other emulators or even the official files.
I want to share my project (or to be more precise: the source code) with other people, who also are interested to create a porject like this. I'm sure i'm not the only one, who always wanted to write a own MMORPG server. :)

I made this thread to show updates to all interested people and to create a small question and discussion platform. I'll answer every question about SharpFly and questions from people, who are also writing a own emulator or something like that, e.g. if you stuck somewhere or just need a hint into the right direction.
I'll also ask the one or the other question, because i also don't know everything.

You can find the current state in my update posts. :)

You can find the source code in the GitHub repository:

Big thanks to Chyukasame for the current logo!
Also big thanks to all developers of OsaFlyFF, Black-Orion and Meteor, your source code saved me from crawling the official code for hours! :)
 
Last edited:
What a coincidence! :)
Just couple of days ago I also started a similar project (but in golang).
My progress so far is similar to yours.

Good luck with this!
 
I didn't had much time to program in the last days, but i had some thoughts about the current world server. Sadly i won't have much time to program in the next week too, because WoW:Legion will be released and i'm already waiting way too long for it. :3


My current thoughts:
I'll rename the world server to cluster server. This server will represent the cluster and all his channels. I want to add a new server called channel server, which will represent a single channel in the cluster. The channel will register himself at his cluster and the cluster will tell the login server, that he now has X channels.
I'm not sure if it will stay like that, because i could imagine that the packet forwarding between cluster and channel server could be a bottleneck in the future. The client creates afaik only 2 connections: One to the login server on port 23000 and one to the cluster server on port 28000. I would prefer to have the client directly on the channel server and only forward interchannel packets, because the (really minimalistic, maybe a few milliseconds) delay would not mind, but right now i have no idea to accomplish that without editing the client which is not acceptable right now.
 
Some news: I renamed the world server to cluster server. I also added a new project for the world server. 1 world server will handle all channel of a cluster, because my planned structure wouldn't work like i wanted it to. :<
 
Aaaaand it's dead?
Nope, i'm just still in the WoW Legion hype. I've some changes on my computer, but didn't upload them yet.
Don't worry, it don't want to let it die that fast, i want to add that project to my portfolio in the future. :)
 
Nope, i'm just still in the WoW Legion hype. I've some changes on my computer, but didn't upload them yet.
Don't worry, it don't want to let it die that fast, i want to add that project to my portfolio in the future. :)

Out of curiosity have you looked into the OSA or Morpheus emulators both of which were incomplete but also C#? I'm sure it may help you out somewhat if needed.
 
Out of curiosity have you looked into the OSA or Morpheus emulators both of which were incomplete but also C#? I'm sure it may help you out somewhat if needed.

Kaev said:
Also big thanks to all developers of OsaFlyFF, Black-Orion and Meteor, your source code saved me from crawling the official code for hours! :)

Yes, i've looked into them and several other non-C# projects. :)
 
Sorry for the long development pause. I'll finally continue this weekend. :)
I've made the decision to use ZeroMQ for the communication between the servers und will hopefully finish the alteration this weekend.
 
Finally, after 2 long months, a new commit! :)
I removed all old interserver socket code and implemented NetMQ (a C# binding of ZeroMQ).
I also fixed the ServerList packet, no idea what i had in my mind when i changed it.

 
(>'-')> Update <('-'<)


The login server and the cluster server are now communicating via NetMQ as intended. That means that i can add channels and clusters dynamically. Now i can finally develope towards character creation and world server!
 
(>'-')> Update <('-'<)


Character creation is working in a simple way! The character creation isn't finished yet, but you can create a character and see him in the character list. :)
 
(>'-')> Update <('-'<)


The development of the world server startet! Every world server will represent a single channel in your cluster server.
 
Project is currently paused because i work on a different FlyFF project. I'll work with the official server files which means that it will save time for SharpFly too if you think about it in the longer term, because i'll know the structure of the official files and i won't have to search every function from the base. :)
 
On which versions of VS to compile the project?
And which client is suitable for this version?
I used Visual Studio 2015 when i created it, but it should also compile with 2017.
The official v15 client is the corrent client.

Sadly the emulator is paused again, but Hellion looks very promising, you should check it out. :)
 
Status
Not open for further replies.
Back