Code Monkey home page Code Monkey logo

imgeneus's Introduction

Imgeneus

Imgeneus is a simple and elegant Shaiya EP8 socket server over the TCP/IP protocol, built with C# 8 and .NET Core Framework 3.1.

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 and run

  1. Build the solution.
  2. 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.

  1. Run Imgeneus.Login & Imgeneus.World projects. For this right click on solution => Properties => Startup Project => Multiple startup projects => Imgeneus.Login - Start; Imgeneus.World - Start.

Solution description

Imgeneus.Core

Core contains some common helpers, extensions etc.

Imgeneus.Database

We are using EF Core for database connections and migrations. You can read more about EF here.

Imgeneus.DatabaseBackgroundService

Background service, that constantly saves changes to the database. You can read more about background services here.

Imgeneus.Network

Includes packet definition from client to server and cryptography implementation.

Imgeneus.Logs

In-game logs, that are saved via SQLite in file.

Imgeneus.InterServer

Communication between servers (login and game) is done with the help of SignalR. You can read more about SignalR here.

Imgeneus.Login

Login server, that handles all packets in the login screen. Redirects to the selected game server.

Imgeneus.World

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.

Unit tests

Any game feature must have a corresponding unit test.

Database migrations

  • 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 run setup.bat file (Don't forget to set your password there). This will populate your database with ep6 original data.

Details

  • Language: C# 8
  • Framework: .NET Core 3.1
  • Application type: Console
  • Database type: MySQL, Version 8.0.22
  • Configuration files type: JSON
  • Environment: Visual Studio 2019

Client versions support

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.

Results

image1 image2

Hall of fame โญ

  • 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.
  • maybe YOU?

Known issues

Issues are usually marked as // TODO: <some comment> throughout the code base.

Find the current state of development here.

imgeneus's People

Contributors

aosyatnik avatar codacy-badger avatar extrez avatar matigramirez avatar mun1z avatar

Watchers

 avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.