Code Monkey home page Code Monkey logo

openage-masterserver's Introduction

openage matchmaking and lobbies

What's this?

This is the "master server" for openage.

Features:

  • Dedicated server registry for public lobbies
  • Player accounts
  • Match results signed with GPG
  • Player and match statistics
  • Elo rankings and match making

When you want to play with friends via LAN, VPN or Internet, this server is not required for you.

This server provides available public lobbies and can generate balanced battles through Elo matchmaking.

How do I run this thing?

You probably don't want to run it except for development: To have one "official" community, this server is provided by sft.

The openage masterserver uses the haskell tool stack to build and install. Executables can be built using stack build.

The server can be started by running stack exec openage-masterserver. The port it is listening on and the database login credentials are specified in the config file /etc/openage/masterserver.cfg.

To start a testclient use stack exec openage-masterserver-test HOST PORT You will be promted to enter login credentials which need to be stored in the postgres database. To view all available commands type help.

Can I help?

Yay! You can just start hacking on whatever you like to improve. Fix bugs, implement features, submit pull requests!

If you got any question, join our IRC: #sfttech on irc.freenode.net.

License

GNU AGPLv3 or later; see copying.md and legal/AGPLv3.

I know that probably nobody is ever gonna look at the copying.md file, but if you want to contribute code to openage, please take the time to skim through it and add yourself to the authors list.

openage-masterserver's People

Contributors

kindl avatar mic-e avatar nerded1337 avatar thejj avatar tobhe avatar zuntrax avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

openage-masterserver's Issues

Re-implement masterserver in Rust

Rust has some advantages that might be useful for us in regards of the implemention of a game server:

  • Safety against Null pointers, race conditions and all sorts of low-level threats.
  • Predictable runtime behavior (zero cost abstractions and no garbage collector).
  • (Almost) total control over the hardware (memory layout, processor features).
  • Seamless interoperability with other languages ( C interop and FFI)
  • Incredible runtime speed (comparable with C/C++)
  • Simple package management with cargo
  • Support for Generics in form of traits

An example of a game server implementation you'll find here:
Game Server in 150 lines of Rust

What are your thoughts about this? Would you prefer also Rust for a re-implementation?

Implement good rating system

Here is a small update after talking to n_brain:

He was recommending us to take a look for the glicko-2 rating system. There is also a pdf-File with mathematical explanations. n_brain said it would be best in combination with a community-based fairness reward system. Sounds like a really good approach to me, not reinventing the wheel and still practicable for our purpose. I would like to help implementing it in the future.

EDIT:
It is also implemented by CS:GO, so the article (saved with waybackmachine) that @chocoladisco linked in his comment is a good read, too. For the actual implementation see the pdf in this comment.

EDIT2:
Also the thoughts of the Guild Wars devs are worth a read and also the pvp-matchmaking algortihm explanation from their wiki.

EDIT3:
The paper from MS about Trueskill(TM).

EDIT4:
TeamFortress2-Matchmaking algorithm explained. I really like that Competitive Mode approach. Will take some notes from that video and publish them in a gist (link will follow).

EDIT5:
A Bayesian Approximation Method for Online Ranking
https://web.archive.org/web/20210501042619/https://jmlr.csail.mit.edu/papers/volume12/weng11a/weng11a.pdf

Originally posted by @simonsan in #9 (comment)

Add continous integration service

As we now have Kevin-CI, we should use it for the masterserver to test the build, maybe even the execution.

Unless travis-ci improved significantly (i.e. build time and container control), we won't use it again.

Roadmap

Proposed roadmap for the features of the masterserver:

  • dedicated servers register at the masterserver
    • later: "official" servers authenticate via gpg
  • the masterserver provides the alive dedicated servers to the client so it can choose
  • the dedicated server is chosen automatically and people are redirected to the server they're gonna play on (matchmaking)
  • the result is transmitted back to the masterserver so it can adjust the player ranks and perform matchmaking the next time

Matchmaking system

The ncZone has their matchmaking open-sourced and Eru (the creator of the system, @teheru) would like to help us as well to implement a good matchmaking system.

The matchmaking code is in his repository under /zone:
https://github.com/teheru/nczone/tree/master/zone

For further questions and as soon as we are able to start working on this we should contact him/tag him here.

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.