Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Ranking Games and new Lobby window #2815

Closed
xan2622 opened this issue Mar 21, 2013 · 40 comments
Closed

Ranking Games and new Lobby window #2815

xan2622 opened this issue Mar 21, 2013 · 40 comments

Comments

@xan2622
Copy link
Contributor

xan2622 commented Mar 21, 2013

Hello.

Multiplayer games could become even more interesting if a Ranking system was implemented.

Concept:

  • Players who want their game to be part of the ranking would just have to enable a checkbox during the game creation
  • Winners of ranking games would be "recorded" and results could be sent to a database (on the website)
  • The best players would see their ranking rise and their names listed in a table, on the website
  • The ranking could last one month but there could be statistics for 3 months, 6 months, a year...
  • Over a season, each player would be able to know his personal statistics such as:
    number of games won, number of games lost, number of games played, pourcentage of
    games won, the fastest game won..

To support this new Ranking system, the lobby would have to be changed a bit.
It should feature options to filter games, find players easily, ...

Here is a mockup:
607690newlobby1

  • The lobby could be upgraded to allow chatting with all connected players (in a global chatroom)
  • There would also be a drop-down menu to filter games by OpenRA version, by mod, by type (standard games, private games (invite-only), ranking game)
    Mockup:
    630164newlobby2
  • The Players list (on the left) could also be sorted
    Mockup:
    787501newlobby3
  • A new button could be added to randomly join any open game
@Mailaender
Copy link
Member

In fact I talked with @hifi from http://cncnet.org about that earlier today. Their plan is to use irc.cncnet.org to emulate Westwood Online. There is a main chatroom #cncnet that serves as a lobby similiar to wait we already dreamed about in #2088. Every new game is just a new channel. You can use NickServ to protect player names #2265 and have ranked play or a ladder by submitting game results to a bot. They require lot's of hacks to get those thinks working for http://redalert1.com and the plan for CnCNet version 5 was to go completely web-based so this IRC thing might be just an interim solution for them. Nothing is done yet. Only an internally developed proof-of-concept CnCNet client that spawns new games and sends/recieves stuff via IRC notifications did spam the chat-rooms there at the moment. Although it might not be ideal we should still keep an eye on what our binary-hacking friends are doing and maybe integrate into it once it is stable.

@Mailaender
Copy link
Member

Just found http://sourceforge.net/projects/gamingladder/ I am not sure if it supports any kind of API to display it in-game.

@Mailaender
Copy link
Member

I asked @Greg-Boggs who maintains http://wesnoth.gamingladder.info/ to help us.

@Greg-Boggs
Copy link

Hi Guys,

All the ladder requires to work is that players be able to create games with titles that indicate that it's a ladder match. Other than that, having the ability to chat is important so players can discuss any details and encourage each other to sign up and participate in the ladder. Matches are reported on the ladder website and replays are uploaded there.

The ladder provides an interface for reporting matches, uploading and viewing replays, and displaying profiles and rankings. It is also adjustable to match up with other game formats.

In an ideal world, the game lobby would provide a single button to create a match. Once the button has been pressed, the game server would match players who have also pressed the button. The reason for this is so that it's not so easy to engineer your opponents. Ladder ranking systems work best randomly matched.

This single button interface is better than the browse, and sort, and match interface because players no longer have to work to find and match games. They press a button and play starts.

This "play game" button is not required for the ladder. All Wesnoth ladder matches are arranged by the players themselves with out support from the game itself.

I'll have an open-ra copy of theladder set up next week so you can play with it. Feel free to email me if you need more admin's added.

~Greg

@Mailaender
Copy link
Member

I think we should start with a completely web-based http://openra.gamingladder.info/ (the Wesnoth one looks pretty impressive) and begin doing some integration with the game client if people like it.

@Mailaender
Copy link
Member

An in-game chat is currently being worked in as #2088 by @ScottNZ.

@Mailaender
Copy link
Member

@Greg-Boggs Am I right that the OpenRA gaming ladder is of the agenda again?

@Mailaender
Copy link
Member

Okay, I might try to do this on my own. Did an svn2git import at https://github.com/Mailaender/GamingLadder

@ghost ghost assigned Mailaender Oct 27, 2013
@xan2622
Copy link
Contributor Author

xan2622 commented Oct 28, 2013

Website that was mentioned on IRC (found by Mailaender):
http://wesnoth.gamingladder.info/faq.php

@Greg-Boggs
Copy link

I created a fork on GitHub and will move all Wesnoth ladder development to the github fork, so pull requests between the two ladders will be easier.

@Mailaender
Copy link
Member

Cool, this has potential to become a "christmas project" of mine. http://www.youtube.com/watch?v=qT90jZP58jM

@xan2622
Copy link
Contributor Author

xan2622 commented Oct 28, 2013

Don't tease us Mailaender, that's playing with your fanbase's hearts ;)

@wuschel
Copy link
Contributor

wuschel commented Dec 18, 2013

@Mailaender @xanax @pchote:

Wouldn't it be much easier to use a hashed replay file with some end game stats included? That way, players could upload those files to a league website. Of course, usernames need to be password protected so no one could make a fake submit, and some security measure have to be taken.

Or use hook trusted official servers (like hetzner) into the ladder directly with use of IRC nick authentication (@pchote)

@Mailaender
Copy link
Member

Unassigning myself. I had a look at the http://wesnoth.gamingladder.info/ and it seems like a monster. Far too complex for a PHP beginner like myself. Also probably not maintainable by me and my small shared webhost. Will wait for http://cncnet.org and http://playcnc.net/ to release something and maybe do OpenRA integration there.

@xan2622
Copy link
Contributor Author

xan2622 commented Dec 29, 2013

Mailaender : what do you expect from cncnet ? (I mean.. some patches? new code?)
It seems after hard work, they have recently released their 5th version of cncnet with success.

@Mailaender
Copy link
Member

A web service or an IRC based system we can just hook on. I don't expect code or patches from their side.

@wuschel
Copy link
Contributor

wuschel commented Dec 30, 2013

What about giving official servers the possibility to authenticate user names (via hash/passw) and simply log the results. Everyone who willing to play for a score would have an option to do so.

@Mailaender
Copy link
Member

Okay, as we don't seem to have the time to create and maintain our own gaming ladder, maybe we should integrate with http://binarybeast.com/api/info instead.

@ghost
Copy link

ghost commented Sep 26, 2014

👍 for this whole ticket.

@clemby
Copy link

clemby commented Nov 30, 2014

Is anyone working on this right now? If not, I'd like to have a go.

@Mailaender Mailaender assigned Mailaender and unassigned Mailaender Nov 30, 2014
@Mailaender
Copy link
Member

Go for it.

@jwbuurlage
Copy link
Contributor

@clemby Are you still working on this? I would like to take this on.

@xan2622
Copy link
Contributor Author

xan2622 commented Feb 9, 2015

@jwbuurlage : how do you plan to implement this?

With an ingame ladder?
With a third party ladder like http://binarybeast.com/api/info ?

@jwbuurlage
Copy link
Contributor

@X-A-N-A-X My initial thought was to have a statistics server, and let game servers (optionally) register finished games there (ranked or unranked alike) using some basic RESTful API. This could be a implemented as a server option that defaults to false. This "statistics server" would allow for multiple output formats for use by an ingame ladder and external websites. This is not unlike how the master server is set up.

For example, a simple API call could be used to obtain current (paged) rankings, for easy integration. I suppose the statistics gathered for a game should be as extensive as possible for future use, but the initial version would only be used for an ELO ladder of some kind. Later the same information could be used for player profiles etc.

If no one is working on this currently, I can draft a more detailed plan.

@GeertJohan
Copy link

I'm also working on something like this. I have plans for a web-based multiplayer platform for openRA. The first version will be very simple, just have a server list and a general chat. But in the end I would like to have an account system, ranked matches, matchmaking, etc.

@jwbuurlage
Copy link
Contributor

@GeertJohan Maybe it would be a good idea to collaborate on this with everyone interested, it seems like a lot of people have tried and gave up. Why would we make a web-based platform? An in-game general lobby and a ranked game list would suffice, and we would not be segregating the player-base. Maybe we can split this into a number of different tasks:

@clemby
Copy link

clemby commented Feb 10, 2015

@jwbuurlage still working on it, but don't let that stop you if you have better ideas.

I've been working towards adding a multiplayer ladder to the tournament site, extending its API and adding appropriate views etc. There is still a lot left though: I haven't implemented the ranking logic or made any changes to the game itself yet (lobby and ranking checkbox as described above); I'm also undecided on how best to authenticate players. Help (anywhere but especially in these areas) is welcome too.
Some notes:

  • An Elo system may be less appropriate for a ladder based on multiplayer games than other ranking systems, such as Glicko-2; alternatively it might be fun to create our own.
  • If unranked games can be recorded, I think that should be the player's decision; I wouldn't want to discourage more relaxed games.

@Greg-Boggs
Copy link

Elo and Glicko-2 are both well suited for online games. The problems with both are similar. Namely, both formulas require 100% random matching between players. If players can pick their matches, it's trivial to inflate rankings in both systems.

On the Wesnoth Ladder, we made more than a few tweaks to improve this. First, new players give out half points. This discourages spam accounts and targeting of newbies for easy points. Second, we've adjusted the point system to allow players to climb over time regardless of their skill. The reason for that is players don't like realizing their rank doesn't increase. It's just not as fun as making small incremental improvements with effort.

On the topic of match recording and integration, the Wesnoth Ladder works entirely with no integration. All matches are player reported and uploaded replays are done manually by the players. It works wonderfully and required significantly less programming to do.

@jwbuurlage
Copy link
Contributor

@Greg-Boggs Very interesting, especially your last paragraph. Can any replay be submitted? Do both parties have to submit the replay? I can see the following problems with this approach, curious how you guys resolved this:

  • What if a casual game is played, and one party decides to upload the recording solely on the basis that he has won and wants to improve his ranking? Or more generally, how do you handle ranked versus unranked games?
  • What stops a player from not reporting a game if he loses? Or is one-party consent enough?
  • Wouldn't it be discouraging for older players to play new players if they only receive half points, or would they only lose half points as well? In other games I have seen ranking systems where experienced players playing new player stood to gain very little points when they won, but received massive penalties when they would lose.
  • Do you guys have any random matchmaking in place?
  • About your second tweak, can you give some more details about your implementation of this?

@Greg-Boggs
Copy link

You should sign up for an account and look at the report page: http://wesnoth.gamingladder.info/report.php

Results and replays are submitted by the match winner. Only mutually agreed ranked games are reported. It's possible for people to cheat. But, actual cheating is very, very low and the stats of reversed games are published on the home page. It does take 1 person willing to be the moderator to settle these infrequent incidents.

The goal of newbie protection was to discourage top players from picking on newbies. The number of games to remove protection are very few. A couple newbies playing together for 2-3 hours could get out of protection.

Wesnoth does not support randomized matches. We requested the feature, but the core team doesn't want to see competitor play built directly into Wesnoth.

I believe the place to look for implementation details are in the constants file of the project: http://sourceforge.net/projects/gamingladder/files/

Essentially, we tweaked the number of points gained so that people gain slightly more than they lose. One commonly requested feature is a second ladder where the ladder resets on a periodic basis while still maintaining the long term standings.

@Micr0Bit
Copy link
Member

@jwbuurlage , @Greg-Boggs @GeertJohan @clemby : you guys may find this here interesting : #3859

ScottNZ made some approach here (with some outstanding results) , but at the end it got removed ... see here : #6786 ... as far as i remember , plan was to build our ranking system on top of that implemented irc chat

we did allready experiment with a "ELO-Bot" in #openra for a while but because the Ingame-Irc never managed to get into a full release ... it never got out of the experimental stage

@GeertJohan
Copy link

@jwbuurlage and I have teamed up and we are actively working on this.

@xan2622
Copy link
Contributor Author

xan2622 commented Jun 14, 2015

@pchote
Copy link
Member

pchote commented Nov 22, 2015

The MP lobby has been overhauled and now looks much like these mockups. Rankings first requires authentication, and so this is now largely a duplicate of #2265 / #9990.

@vizcay
Copy link

vizcay commented Apr 17, 2016

Hi! what's the current status of this!?

I was thinking to colaborate, being a full stack developer I can develop the API & simple web interface (twitter bootstrap) for a ranking system like ELO (I also play chess), with profiles, very fast. I've read about implementing this with IRC and I think it will lack flexibility in the future.

But I'm not a C# developer so I wont be able to submit pull request for the main game, only develop the server side.

Stack: Ruby On Rails, PostgresSQL, Nginx, Linux.

@pchote
Copy link
Member

pchote commented Apr 17, 2016

This is still blocked on having a player authentication system that works with the game. IRC was previously discussed as an option for that, but I personally think a much better approach would be to integrate it with our planned new forum (as a phpBB3 modification).

There's really no point in implementing rankings until we can authenticate that players are who they claim they are. It is far too prone to abuse otherwise.

@vizcay
Copy link

vizcay commented Apr 17, 2016

Hi @pchote ,
authentication is central to the ranking system of course.. but, server side speaking, is not difficult at all, and I don't believe client side with C# to be too troublesome..

Basically,

  1. Player browses to ranking site, lets say http://league.openra.net and creates an account.
  2. It's inserts it's login name and password into OpenRA.
  3. When the player opens OpenRA multiplayer lobby it's gets authenticated by connecting to API endpoint, of course we never send plain passwords over the wire.. a simple scheme like HTTP Digest Authentication can be used.
  4. API endpoint responds with a token with a limited lifetime (or else the authentication process has to be done every time the client comunicates with the API).
  5. When a game starts both clients contact the API informing that it will be a ranked game.
  6. When a game finishs, clients contact the API informing the result.

Of course there a few things to consider like what will happen if both clients inform different results (cheating?), etc. But for starting is not difficult at all, I bet I can have a prototype working in like a week.

@pchote
Copy link
Member

pchote commented Apr 17, 2016

If you wanted to put some time in to build a rough backend prototype that could be used as a starting point for the client side work, then that would be great. Once the client and server sides are working together we could decide on how/if we want to proceed further.

The standing plan for handling ranked games and avoiding cheating is to have a set of whitelisted ranked servers, and then the servers report the game results to the backend. If players want to play unranked games then they can play on unranked servers. We would then have API methods for clients to verify that a ranked server is what it claims to be, and for the server to verify that clients are who they claim to be.

@vizcay
Copy link

vizcay commented Apr 18, 2016

@pchote:
I understand your concerns about the whitlisting of servers.. but this is not a profesional league (aka starcraft in south corea) or something that needs ultra security, like homebanking. And yet it will add a lot to the comunity in terms of new players and traffic. Also whitelisted servers can add a bottleneck if trafic starts to grow.

What about this scheme:
1- When a ranked game starts both clients comunicate separately to the server via the API (this is not repudiable if implemented well).
2- When a ranked game ends both clients comunicate the result. If both comunicate the same, all good. If there is a discrepancy, well there will be the need of manual adjustment and banning of the ofending player.
3- Disconnects losts after X time or disconnect cancels game policy.

The worst thing I can think of is the game server disconnecting the client on purpose to claim a disconnect...

But,
1- it's very easy to detect a cheat (manually, checking the replay), and an ip ban can also be applied.
2- it's very difficult to abuse the system in the long run and on which incentives? (not money to win).
3- not everyone is tech-savvy enought to hijack even simple schemes like this.

By the way, are u currently using XML or JSON as the payload of the HTTP API ?

@ghost ghost mentioned this issue Oct 25, 2016
@Mailaender Mailaender removed the Bounty label Nov 10, 2016
@Mailaender Mailaender changed the title Ranking Games and new Lobby window [$10] Ranking Games and new Lobby window Nov 10, 2016
@Stekke Stekke mentioned this issue Apr 22, 2017
@pchote
Copy link
Member

pchote commented Dec 29, 2017

The server browser and lobby windows have changed a lot since this was created, and we have other issues covering the specifics of authentication and ranking. Closing.

@pchote pchote closed this as completed Dec 29, 2017
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

10 participants