 |
OMF:BG Message Board One Must Fall: Battlegrounds
|
View previous topic :: View next topic |
Author |
Message |
raptor Ancient One

Joined: 02 Sep 1999 Posts: 4558 Location: Norway
|
Posted: Tue May 27, 2014 10:42 am Post subject: Speculation thread: OpenOMF ladder system |
|
|
Of the many things I don't know much about, online game ranking, matchmaking and ladder systems is another prime example.
So, if OpenOMF where to have a sort of matchmaking, online playgrounds, with some sort of ladders, tournaments, rankings etc, how to do it ?
could possibly also be a nice way to save and view replays of matches.
So anyone care to enlighten me on how fighting games usually run this, and what would be a good way to solve it ? Also how to run tournaments and ladders etc ?
(After all I wanna know how I have to beat all of you to be top ranked! ;) ) _________________ - Jon Eirik * www.omf2097.com * www.omf2097.com/wiki * https://discord.gg/sT8YU2E <- OMF Discord |
|
Back to top |
|
 |
katajakasa OpenOMFdev
Joined: 17 Jan 2013 Posts: 72
|
Posted: Sat Jun 07, 2014 8:22 am Post subject: |
|
|
What we've been planning on IRC channel so far:
- A website somewhere. The website would show the ladders in a nice list, you could register and log in to see your statistics, etc.
- A database. MySQL or whatever, really. Something that would hold all game statistics, won/lost matches, logins etc.
- A server for accepting data from the players clients. Eg. JSON format, UTF-8. That way this could be implemented eg. in Django pretty easily.
- NAT traversal server. The implementation would depend on the mechanism we want to use. STUN or whatever. TODO v1.0+.
Clients view of Internet games:
1. Clients start up and connect to a server somewhere on the internet. Login information is sent. TCP/TLS socket (might as well).
2. Clients are either asked to repeat login information or are redirected to games lobby. There should be somesort of "now online" list and a chat. We could eg. use IRC ? Or our own protocol ? Via Websockets/JSON to the Django server ? Need to be planned.
3. A match lobby for picking settings and chat. Ranked games will probably select lots of options for you, but in unranked 1v1 these could be more open for changes.
4. When a game is started (tournament, 1v1, other?), REC recording is started, and clients are told to create a peer-to-peer link between each other. This should use NAT traversal techniques if necessary. Also, this way we minimize the latency between clients.
5. When game is over, both clients send their RECs to server. Clients kill their p2p link and show the usual you won/you lost stuff etc. After this, both players are redirected to a statistics/lobby specific to only them, so that the players can see how much they suck compared to raptor and call each other names. Close button takes both players back to lobby.
6. In lobby, you may quit and go back to main menu whenever.
Last edited by katajakasa on Sat Jun 07, 2014 8:25 am; edited 1 time in total |
|
Back to top |
|
 |
katajakasa OpenOMFdev
Joined: 17 Jan 2013 Posts: 72
|
Posted: Sat Jun 07, 2014 8:23 am Post subject: |
|
|
Also, about internet/lan game modes:
- 1 vs. 1 challenge (both LAN/Internet): Challenge anyone in the lobby for a quick match.
- 1 vs. 1 Ladder game (Only Internet): Challenge an opponent selected for you to a ranked match.
- Tournament game (both LAN/Internet): Challenge a group of players to a tournament game. Ranking needs to be determined at later date.
- Else ? |
|
Back to top |
|
 |
katajakasa OpenOMFdev
Joined: 17 Jan 2013 Posts: 72
|
Posted: Sat Jun 07, 2014 7:16 pm Post subject: |
|
|
Oh, and, about the ranking system. How about we give every player a "score". Higher score = better player. Low score = crappy player.
If you win matches, you gain points. If you beat a good player, you gain more points than if you beat a bad player.
If you lose matches, you lose points. If you lose to a good player, you lose less points than if you lose to a bad player.
Minimum limit is 0 points. I'm not sure if there should be a maximum limit for points. Maybe we should set some arbitrary maximum, and then reduce points gained for each match when approaching that limit.
The system should always attempt to give you opponents with equal score, with a margin of +/-25% or something like that ... |
|
Back to top |
|
 |
Malfrex Ancient One
Joined: 27 Jul 2000 Posts: 2112 Location: Vancouver, BC/Canada
|
Posted: Tue Jun 10, 2014 3:32 pm Post subject: |
|
|
I think configuring an ELO ranking would probably work best, and having a minimum score of non-zero value so people don't feel completely stupid.
ie. new player registers, they have a ranking of 1000. They have a minimum score of 500.
Legend:
Px: opposition ELO
Py: player's ELO
H: %HP left (winner) /taken (loser)
Scoring would be as follows:
Winner: (20 + 10H) * 1/[1 + 10^((Px - Py)/200)]
Loser: -(25 - (20 + 10H) * 1/[1 + 10^((Px - Py)/200)])
Same ELO (ie. 1000); Player 1 wins with 50% HP
P1 = (20 + 10*.5) * (1/2) ) = Gains ~12.5 ELO
P2 = (20 + 10*.5) * (1/2))) = Loses ~12.5 ELO
Same ELO (ie. 1000); Player 1 wins with 5% HP
P1 = (20 + 10*.05) * (1/2) ) = Gains ~10.3 ELO
P2 = -(25 - (20 + 10*.95) * (1/2))) = Loses ~10.3 ELO
Player 1 has 1100 ELO, Player 2 has 1000ELO; Player 1 wins with 50% HP
P1 = (20 + 10*.5) *(1/4.16) = Gains ~6.0 ELO
P2 = -(25 - (20 + 10*.5) *(1/1.316)) = Loses ~6 ELO
Player 1 has 1100 ELO, Player 2 has 1000ELO; Player 1 wins with 5% HP
P1 = (20 + 10*.05) *(1/4.16) = Gains ~4.9 ELO
P2 = -(25 - (20 + 10*.95) *(1/1.316)) = Loses ~2.6 ELO
Player 1 has 1100 ELO, Player 2 has 1000ELO; Player 2 wins with 5% HP
P1 = -(25 - (20 + 10*.95) *(1/4.16)) = Loses ~18.0 ELO
P2 = (20 + 10*.05) *(1/1.316) = Gains ~15.6 ELO
Player 1 has 1100 ELO, Player 2 has 1000ELO; Player 2 wins with 50% HP
P1 = -(25 - (20 + 10*.5) *(1/4.16)) = Loses ~19.0 ELO
P2 = (20 + 10*.5) *(1/1.316) = Gains ~ 19.0 ELO _________________ I'm not crazy, I'm sanity-challenged.
ASUS P8Z77-V PRO
i7 3770k (will OC @4.5Ghz)
2x8GB G.SKILL DDR3-2600
MSI 7970 3GB
Crucial M4 128GB
~10.9TB RAID 5 (4x 4TB)
|
|
Back to top |
|
 |
katajakasa OpenOMFdev
Joined: 17 Jan 2013 Posts: 72
|
Posted: Tue Jul 08, 2014 4:54 am Post subject: |
|
|
Malfrex wrote: | I think configuring an ELO ranking would probably work best, and having a minimum score of non-zero value so people don't feel completely stupid.
ie. new player registers, they have a ranking of 1000. They have a minimum score of 500.
Legend:
Px: opposition ELO
Py: player's ELO
H: %HP left (winner) /taken (loser)
Scoring would be as follows:
Winner: (20 + 10H) * 1/[1 + 10^((Px - Py)/200)]
Loser: -(25 - (20 + 10H) * 1/[1 + 10^((Px - Py)/200)])
Same ELO (ie. 1000); Player 1 wins with 50% HP
P1 = (20 + 10*.5) * (1/2) ) = Gains ~12.5 ELO
P2 = (20 + 10*.5) * (1/2))) = Loses ~12.5 ELO
Same ELO (ie. 1000); Player 1 wins with 5% HP
P1 = (20 + 10*.05) * (1/2) ) = Gains ~10.3 ELO
P2 = -(25 - (20 + 10*.95) * (1/2))) = Loses ~10.3 ELO
Player 1 has 1100 ELO, Player 2 has 1000ELO; Player 1 wins with 50% HP
P1 = (20 + 10*.5) *(1/4.16) = Gains ~6.0 ELO
P2 = -(25 - (20 + 10*.5) *(1/1.316)) = Loses ~6 ELO
Player 1 has 1100 ELO, Player 2 has 1000ELO; Player 1 wins with 5% HP
P1 = (20 + 10*.05) *(1/4.16) = Gains ~4.9 ELO
P2 = -(25 - (20 + 10*.95) *(1/1.316)) = Loses ~2.6 ELO
Player 1 has 1100 ELO, Player 2 has 1000ELO; Player 2 wins with 5% HP
P1 = -(25 - (20 + 10*.95) *(1/4.16)) = Loses ~18.0 ELO
P2 = (20 + 10*.05) *(1/1.316) = Gains ~15.6 ELO
Player 1 has 1100 ELO, Player 2 has 1000ELO; Player 2 wins with 50% HP
P1 = -(25 - (20 + 10*.5) *(1/4.16)) = Loses ~19.0 ELO
P2 = (20 + 10*.5) *(1/1.316) = Gains ~ 19.0 ELO |
Yeah, I read the wikipedia article about ELO ranking system now; this seems like it would work, and would be relatively simple to implement too.
I guess now we just need to get the game working  |
|
Back to top |
|
 |
|
|
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot vote in polls in this forum
|
|