Imgeneus is a simple and elegant Shaiya EP8 socket server over the TCP/IP protocol, built with C# 10 and .NET 6.0.
This project has been created for learning purposes about the network and game logic problematics on the server-side. We choose Shaiya because it is a simple game, but enough complex to learn the basic functions of an MMO game architecture. It's not about playing a game or competing with any services provided by Aeriagames or its partners, and we don't endorse such actions.
This repo also uses the best parts of these repos: Drakkus/ShaiyaGenesis, Origin and original Imgeneus (removed by creator).
- Build the solution.
- Create 3 files
appsettings.Development.json
in Imgeneus.Login & Imgeneus.World & Imgeneus.Database projects. Override default configs with your development config. E.g. you can provide your password as following:
{
"Database": {
"Password": "your_password"
}
}
These files are added to the ignore list, so you can be sure, that you won't commit any of your credentials.
-
Add to folder
config\SData
next files:DBItemData.SData
,NpcQuest.SData
. You can find these files in os game data.saf. If you can not open EP 8 data.saf file, please check Parsec project. -
Run Imgeneus.Login & Imgeneus.World projects. For this right click on solution => Properties => Startup Project => Multiple startup projects => Imgeneus.Login - Start; Imgeneus.World - Start.
You are not dev, feel lost but still want to start? Check out our wiki page.
Core contains some common helpers, extensions etc.
We are using EF Core for database connections and migrations. You can read more about EF here.
Includes packet definition from client to server and cryptography implementation.
In-game logs, that are saved via SQLite in file.
Communication between servers (login and game) is done with the help of SignalR. You can read more about SignalR here.
Game logic.
Login server, that handles all packets in the login screen. Redirects to the selected game server.
Game server. As well as login server, it's TCP server running on top of ASP.Net Core. You can read more about ASP.Net here.
Any game feature must have a corresponding unit test.
- Migrations are done automatically as soon as you run world server.
- You can also migrate manually via Package console or .NET cli. You can read more about migrations here.
- To fulfill the database with example data open
src\Imgeneus.Database\Migrations\sql
folder and runsetup.bat
file (Don't forget to set your password there). This will populate your database with ep6 original data.
- Language:
C# 10
- Framework:
.NET 6.0
- Application type:
Console
- Database type:
MySQL
, Version8.0.26
- Configuration files type:
JSON
- Environment:
Visual Studio 2022
- OS:
Win 11
Our main goal is learning, clients are used only for testing. We are not trying to harm any server or dev team. That's why we are not exposing any clients or server name, where these clients are used. Next versions supported:
- EP 8, you can find it on e**rs.com. In code marked as
EP8_V1
. No longer supported - EP 8, the newest version of private server. In code marked as
EP8_V2
. - EP 8, the latest version of the Shaiya US client. You can download the client from the official publisher. Marked as
SHAIYA_US
in the build configuration.
- KSExtrez - firstly started the project and setup DI containers and web socket pool.
- Cups - the first person, that created a dummy emulator, with his source code we could understand packet structure.
- anton1312 - helped with packet encryption algorithm implementation in C#.
- Juuf - helped with Dye system packet structure.
- matigramirez - helped with the implementation of different features.
- Bowie - provided solid asm support.
- ZheinGlitch - helped with Chaotic square packet structure.
- Eastrall - helped with project structure and provider awesome libraries LiteNetwork and Sylver.HandlerInvoker.
- Kreon - helped with enchant packet structure.
- Razor & Kegi - created guides for beginners.
- UZC - answered a lot of ep 8 questions.
- maybe YOU?
Issues are usually marked as // TODO: <some comment>
throughout the code base.
Find the current state of development here.
Project website here.