OMF:BG Message Board Forum Index OMF:BG Message Board
One Must Fall: Battlegrounds
 
 FAQFAQ   SearchSearch   MemberlistMemberlist   UsergroupsUsergroups   RegisterRegister 
 ProfileProfile   Log in to check your private messagesLog in to check your private messages   Log inLog in 

Speculation thread: OpenOMF ladder system

 
Post new topic   Reply to topic    OMF:BG Message Board Forum Index -> Off Topic
View previous topic :: View next topic  
Author Message
raptor
Ancient One


Joined: 02 Sep 1999
Posts: 4518
Location: Sandefjord, Norway

PostPosted: Tue May 27, 2014 10:42 am    Post subject: Speculation thread: OpenOMF ladder system Reply with quote

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 * www.omf2097.com/chat -
Back to top
View user's profile Send private message Send e-mail Visit poster's website AIM Address MSN Messenger ICQ Number
katajakasa
OpenOMFdev


Joined: 17 Jan 2013
Posts: 67

PostPosted: Sat Jun 07, 2014 8:22 am    Post subject: Reply with quote

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
View user's profile Send private message
katajakasa
OpenOMFdev


Joined: 17 Jan 2013
Posts: 67

PostPosted: Sat Jun 07, 2014 8:23 am    Post subject: Reply with quote

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
View user's profile Send private message
katajakasa
OpenOMFdev


Joined: 17 Jan 2013
Posts: 67

PostPosted: Sat Jun 07, 2014 7:16 pm    Post subject: Reply with quote

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
View user's profile Send private message
Malfrex
Ancient One


Joined: 27 Jul 2000
Posts: 2098
Location: Vancouver, BC/Canada

PostPosted: Tue Jun 10, 2014 3:32 pm    Post subject: Reply with quote

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
View user's profile Send private message ICQ Number
katajakasa
OpenOMFdev


Joined: 17 Jan 2013
Posts: 67

PostPosted: Tue Jul 08, 2014 4:54 am    Post subject: Reply with quote

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 Very Happy
Back to top
View user's profile Send private message
Display posts from previous:   
Post new topic   Reply to topic    OMF:BG Message Board Forum Index -> Off Topic All times are GMT - 8 Hours
Page 1 of 1

 
Jump to:  
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


Powered by phpBB © 2001, 2005 phpBB Group

Style Blacker1 by Blacker47