Skip to content

v0.3.0

Latest
Compare
Choose a tag to compare
@kozabrada123 kozabrada123 released this 03 Sep 05:04
· 7 commits to main since this release

Rewrites the lunars server, changing several key components and implementing a new rating system

Key server changes:

  • Switch from nickel to rocket as the http server framework
  • Switch from rusqlite to sqlx as the database framework
  • Switch from sqlite to MySql server as the database
  • Automatically generate documentation (openapi.json) based off routes and schema
  • Implement ratelimiting as a 1 minute sliding window, where unauthenticated users can send up to 60 requests per minute and users with an api key can send up to 120 requests per minute
  • Change how authentication works; instead of passing a key inside a schema, the server will look for a key inside the Authorization header
  • Re-do the api, due to the fundamental change of the rating system

Rating system changes:

  • Switch from an ELO based system to a Glicko-2 based system (transfer the changes for ping compensation, match score)
  • The new glicko based system works with rating periods; we keep track of matches for a set period of time, and once the period has ended, we process the rating for all players
  • I have temporarily set the rating period length to 3 weeks. The specification mentions an ideal length would mean 5-10 matches played per player; we will see if 3 weeks works for that metric
  • To fix the UX of not being able to see your rating until the rating period is over, use the fractional rating period modification seen in the instant-glicko-2 crate

(Later today I will fully deploy the new version and generate api keys)