Skip to content

MapleStory v83 Server emulator written in TypeScript.

Notifications You must be signed in to change notification settings

jonnylin13/omega

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

omega

v83 MapleStory Server emulator written in TypeScript. Inspired by projects like HeavenMS.

This project has been sidetracked for @perion/perion.

Features

  • Easy development environment
  • Uses a microservice architecture where state is decoupled into center, login, shop, and channel servers
  • Currently runs as a cluster of processes, with future support for running each service independently
  • Advanced metrics using Prometheus
  • Will support both the NX and WZ format
  • Will use multithreading to delegate compute-heavy tasks
  • Will use token-based authentication for intraserver communication

Setup and contribution

  • Fork the repository
  • Run npm install in the project directory to install the dependencies

Convention

  • Class names will use PascalCase
  • Filenames, functions, and variable names will use camelCase
  • SQL tables and columns will use snake_case
  • Tests will be written as *.test.ts and placed in the test/ directory

Running the server

  • Run the server with npm run start
  • Run the unit tests with npm run test

Client files

  • Download the client files here

Checklist

Milestones

  • Login
    • Get to login screen (handshake)
    • Auto register
    • Password verification
    • Accept TOS
    • Register gender
    • Register pin
    • Pin verification
    • Select a world
    • Select a channel
    • Character list
    • Create a character
    • Register PIC
    • Select a character
    • Delete a character
    • PIC verification

Short goals

  • Server infrastructure
    • Bootstrap process
    • Implement CenterServer
    • Implement LoginServer
    • Implement ChannelServer
    • Implement ShopServer
    • Implement packet delegation
    • Implement packet handling
  • Encryption
    • Implement AES encryption
    • Implement Shanda encryption
  • Implement packet readers/writers with Buffer
    • Output classes/interfaces
    • Input classes/interfaces
  • Implement WZ loading
    • Parse a single WZ XML file
    • Parse a WZ directory
  • Implement NX loading
    • Parse a single NX file
  • Scripting engine
  • Anti-cheat measures
    • Implement token authentication for intraserver communication
    • Implement multiclient check
  • Implement database layer
  • Implement logging
  • Implement configuration
  • Integrate Prometheus (performance benchmarking/metrics)

Long goals

  • Design cluster system to fork worker processes
  • De-couple state in order to achieve micro-service architecture
  • Use Redis as a memory store, and have a task to periodically update the DB
  • Design worker_threads system to delegate compute-heavy tasks
  • Docker support

Releases

No releases published

Packages

No packages published