Skip to content

REMS is a Master Server and Ranking Server for the popular Halo Online mod called "ElDewrito", written in Rust.

License

Notifications You must be signed in to change notification settings

thebeerkeg/rust-eldewrito-master-server

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

72 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

REMS: Rust Eldewrito Master Server

Project Description

REMS is a Master Server and Ranking Server for the popular Halo Online mod called "ElDewrito", written in Rust.

Features

  • Master Server
  • Ranking Server (Only supports 0.6.x for now!)
  • Works behind reverse proxy
  • Configurable Endpoint Paths (Eg: /stats -> /playerinfo)
  • Custom Rank & Exp Logic
  • Custom Emblems- todo
  • Amazing performance thanks to Rust!

Install REMS

Download Binaries

Download the latest binaries from the releases.

Or Build Manually

  • Git: sudo apt-get install git

  • cURL: sudo apt-get install curl

  • Rust/Cargo:

    1. curl https://sh.rustup.rs -sSf | sh
    2. 1 Proceed with installation (default)
    3. source $HOME/.cargo/env
  • Build-tools:

    • for Arch Linux: sudo pacman -S base-devel
    • for Debian/Ubuntu: sudo apt install build-essential
  • Clone the repo.

git clone https://github.com/thebeerkeg/rust-eldewrito-master-server.git
cd rust-eldewrito-master-server
  • Build the source code.
cargo build --release

Usage

  • Run REMS once to create the config.toml file:
./target/release/rust-eldewrito-master-server
  • Edit the newly created config.toml file according to your liking. Eg:
log_level = "info" #off/error/warn/info/debug/trace
bind_address = "0.0.0.0:3000"
external_address = "148.251.256.200" #set this if you have local servers
db_url = "sqlite://data.db?mode=rwc"
on_reverse_proxy = false

[master_server]
enabled = true
announce_endpoint = "announce"
list_endpoint = "list"
ed_announce_interval = 150
max_time_without_announce = 30
update_interval = 10

[ranking_server]
enabled = true
submit_endpoint = "submit"
stats_endpoint = "stats"
submit_whitelist_enabled = false
submit_whitelist = ["127.0.0.1"]
default_emblem = "http://thebeerkeg.net/img/default.png"
max_rank = 37
winning_team_multiplier = 2
score_multiplier = 10
kills_multiplier = 1
assists_multiplier = 0
max_exp_per_game = 100
  • Run REMS again:
./target/release/rust-eldewrito-master-server

Update Your Eldewrito Server

  • Open the mods directory of your Eldewrito install.
  • Open the dewrito.json file.

Ranking Server:

  • Add http://YOUR_IP_OR_DOMAIN:PORT/submit to "stats"."submitUrls"
  • Change "stats"."playerInfo" to http://YOUR_IP_OR_DOMAIN:PORT/stats

Master Server:

  • Add the following to "masterServers":
{
    "list": "http://YOUR_IP_OR_DOMAIN:PORT/list",
    "announce": "http://YOUR_IP_OR_DOMAIN:PORT/announce",
    "stats": ""
}

Benchmarks

JMeter Benchmarks (empty /list endpoint): Concurrent requests per second = average latency in miliseconds.

Requests / second Rust(ms) NodeJS(ms)
1 1 2
10 1 2
50 1 2
250 2 13
500 2 50-80
1000 2 100-400
2000 2 100-400
10000 2 1000+ (died on 5000 requests)

As you can see here, the Rust based master server performs significantly better than the NodeJS based master server under heavy load.

About

REMS is a Master Server and Ranking Server for the popular Halo Online mod called "ElDewrito", written in Rust.

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Languages