-
Notifications
You must be signed in to change notification settings - Fork 20
About Freya
After Minerva (an open-source CABAL MMORPG emulator, RZ threads here and here) development has been discontinued, nothing else pretty much happened regarding CABAL server-side stuff. Few months later, I've got in touch with Go language and I thought: why not continuing work with emulator? After all, it's just a hobby project... However, Minerva have some weak spots due it's design, so I've ended up writing server emulator from scratch using Go language.
Initially, Minerva supported EP2/EP7 versions, later I've added support for EP8/EP16; on the other hand, Freya is focused only on EP8 at the moment. This is because we do have EP8 server files, so it's helpful that you can analyse packets with manipulated data from database.
Is Freya based on Minerva?
No. However, since I've worked with Minerva before, both emulators share some design pattern: both have MasterServer, which is like a bridge between Login and Game servers. Both emulators are using MariaDB database. There might be some other minor things aswell. It's worth noting that Minerva is written in C#, while Freya is in Go.
Now this is quite early comparison, but a few things can be said. Server architecture: Freya will have less server daemons:
Freya | Official |
---|---|
LoginServer | LoginServer |
GameServer | WorldServer |
ChatServer | ChatNode |
ShopServer | AgentShop |
MasterServer | GlobalMgrSvr, GlobalDBAgent, DBAgent, AuthDBAgent, EventMgrSvr, ... |
As you can see, Freya's MasterServer will be just one, which is like GlobalMgrSvr, but it's everything in one. There is a chance that I could merge ChatServer with ShopServer, but it's quite early to say that.
Also Freya is cross-platform, due nature of Go language. This means, that it can run on Windows/Linux/OS X or any other OS if there is Go compiler for it.
This is a hobby project, as I'm interested in network programming. This is not my main goal or project. I do have other projects aswell. When I have time I'm working on Freya.
Feature wise, I do want to add scripting support, probably Lua language. With scripting, you could be able to add functionality to the server without recompiling binaries. Also creating custom events and so on.
However, main objective is to emulate EP8 version as much as possible. But this doesn't mean that it will be stopped after adding EP8 support. Newer episode support will be added when EP8 is finished. Due this, some parts of EP8 won't be analysed and added into Freya, like crafting system.