Thuật toán ELO để xử lý những người không chơi thường xuyên


9

Tôi đang sử dụng thuật toán ELO để xếp hạng người chơi trong một cuộc thi pong đang diễn ra. Hầu hết người chơi chơi mỗi ngày, nhưng chúng tôi có một người chơi chưa chơi trong một tháng. Thuật toán của tôi hiện chỉ theo dõi điểm số trong 30 ngày qua và kết quả là, người chơi này đang nhanh chóng tăng lên qua các cấp bậc, mặc dù chưa bao giờ chơi. Anh ấy đã thua một loạt các trò chơi đầu tiên của mình, nhưng đã thắng hầu hết các trò chơi cuối cùng của anh ấy, điều đó có nghĩa là những mất mát của anh ấy đang rơi khỏi bảng xếp hạng và kết quả là anh ấy sẽ tăng lên.

Rõ ràng, kế hoạch của tôi để giảm điểm sau 30 ngày không hoạt động. Tôi có thể sử dụng những phương pháp nào khác để phạt người chơi vì không chơi thường xuyên?

Điều duy nhất tôi nghĩ ra cho đến nay là giảm điểm dựa trên tỷ lệ phần trăm dựa trên số ngày không hoạt động (nghĩa là nếu người dùng không chơi trong một tuần, điểm của anh ta chỉ đáng giá 70% so với bình thường, và anh ta sẽ phải chơi X lần để lấy lại tới 100% điểm).

Tuy nhiên, điều này có vẻ quá tùy tiện. Có ai có ý tưởng hay đề xuất nào tốt hơn để xử lý những người chơi không hoạt động trong một môi trường hoạt động khác không?

Cảm ơn trước.

Câu trả lời:


18

Có vẻ như bạn đang lưu trữ các điểm được trao cho mỗi trận đấu và sau đó 'hết hạn' những điều chỉnh điểm đó theo thời gian. Mà, như bạn đã nhận thấy, là mở để khai thác dễ dàng.

Trong triển khai ELO tiêu chuẩn, điểm ELO của bạn là mãi mãi; nó không 'phân rã' theo thời gian, vì có điểm rời khỏi hệ thống xếp hạng theo cách này cuối cùng sẽ dẫn đến giảm phát điểm tổng thể (nghĩa là: 1500 sẽ không còn có nghĩa là 'trung bình').

Hãy nhớ rằng bảng xếp hạng ELO không phải là "điểm" theo cách mà người chơi trò chơi thường nghĩ về chúng; chúng là một nỗ lực để xếp hạng mức độ kỹ năng của người chơi so với những người chơi khác, chúng không phải là một phần thưởng. Những điểm này không nên bị coi là một hình phạt đối với người chơi, bởi vì chúng là công cụ duy nhất bạn phải cố gắng để so khớp người chơi với các đối thủ có trình độ kỹ năng tương tự. Điều duy nhất ảnh hưởng đến các giá trị này - bao giờ hết - là thắng và thua trước những người chơi xếp hạng khác.

Cách tiếp cận được thực hiện bởi hầu hết các trò chơi muốn ngăn người chơi đạt được điểm cao và sau đó biến mất, không bao giờ chơi lại, là có một yêu cầu hoạt động cho màn hình bảng xếp hạng; nếu một người chơi đã không chơi một trò chơi trong 30 ngày (hoặc bất cứ điều gì), họ chỉ đơn giản là không xuất hiện trong bảng xếp hạng cho đến khi họ chơi. Khi người chơi trở lại và chơi một trận đấu xếp hạng khác, họ trở lại với thứ hạng ELO đầy đủ của họ, chính xác như thể họ chưa bao giờ rời đi. Nếu cấp độ kỹ năng của họ thay đổi so với những người chơi tích cực khác trong thời gian tạm thời, trò chơi sẽ nhanh chóng nhận thấy điều đó và điều chỉnh thứ hạng của họ, thông qua quá trình tiêu chuẩn để thắng và thua trận đấu với đối thủ.


1
+1 trong khi đây là lời giải thích chính xác về lý do tại sao điều này thất bại, thay vào đó tôi chỉ cần bỏ ELO và tìm kiếm thứ gì đó hoàn toàn khác. (Tôi không biết những gì, hoặc tôi sẽ đăng nó ^^)
o0 '.

4
@Lohoris Đó là một lựa chọn phát triển hoàn toàn hợp lý. Nếu mục tiêu không duy trì sự so sánh có ý nghĩa về mức độ kỹ năng khách quan của mọi người so với nhau, (ví dụ: cho mục đích mai mối), thì ELO không phải là một lựa chọn tuyệt vời để sử dụng làm cơ chế tính điểm. Và thậm chí có một số trò chơi sử dụng hệ thống như ELO dưới vỏ bọc để mai mối, trong khi sử dụng hệ thống "điểm" hoàn toàn khác cho mục đích hiển thị, cho phép họ thưởng cho mọi người chơi thường xuyên hơn. StarCraft 2 làm điều này, ví dụ.
Trevor Powell

4

Các thuật toán như Elo và TrueSkill xác định kỹ năng của người chơi dựa trên kết quả của mỗi trò chơi được chơi mà không liên quan đến thời gian trôi qua. Tuy nhiên, cả hai thuật toán đều có yếu tố "không chắc chắn" - trong trường hợp của Elo, có một yếu tố K Factorthường được đặt cao cho người chơi mới, do đó xếp hạng Elo của họ sẽ nhanh chóng hội tụ xếp hạng kỹ năng "thật" của họ. Sau một thời gian đã đặt hoặc một số lượng trò chơi đã đặt, K Factorthông thường sẽ giảm, do đó xếp hạng thay đổi ít hơn giữa các trò chơi.

Những gì bạn đang thấy có khả năng là hành vi Elo điển hình (tùy thuộc vào việc triển khai Elo của bạn): người chơi của bạn đã chơi ít trò chơi hơn so với đối thủ cạnh tranh, điều này khiến anh ta trở thành "người chơi mới" cao hơn K Factor; kể từ khi anh ta thắng các trò chơi của mình, thuật toán coi anh ta là một người chơi có kỹ năng cao hơn và trao cho anh ta một thứ hạng cao hơn!

Lưu ý rằng các thuật toán xếp hạng thường chỉ được sử dụng để so sánh giữa những người chơi và không xác định kết quả của các cuộc thi, do hành vi của họ. Vì bạn muốn thưởng cho sự tham gia, tôi khuyên bạn nên ghi điểm cho người chơi trong cuộc thi theo cách khác. Một số gợi ý:

  • Điểm người chơi dựa trên số trận thắng.
  • Gán giá trị điểm cho thắng / thua, ví dụ 2 điểm cho một chiến thắng, 1 điểm cho một trận thua.
  • Chỉ tính các trò chơi X hay nhất của người chơi trong một tuần / tháng nhất định.
  • Yêu cầu người chơi chơi số lượng trò chơi tối thiểu để "đủ điều kiện".

Lưu ý rằng không có giải pháp nào trong số những giải pháp này sẽ cho kết quả hoàn toàn "công bằng", vì những người chơi chơi nhiều hơn sẽ có điểm cao hơn những người chơi không. Cách duy nhất để đảm bảo sự công bằng là cho người chơi chơi một số lượng trò chơi giống hệt nhau.


Tôi nghĩ thật công bằng khi những người chơi chơi nhiều hơn (trong khi có cùng tỷ lệ thắng / thua trung bình) nên có số điểm cao hơn những người chơi không chơi nhiều ...
David Gouveia

3
@davidluzgouveia - đó không hoàn toàn là định nghĩa của "công bằng". Khi ghi bàn cho người chơi trong một giải đấu, kết quả là "công bằng" nếu không có người chơi nào có lợi thế mà người chơi khác không có (không liên quan đến kỹ năng). Phải nói rằng, tôi nghĩ trường hợp chúng ta đang nói đến là một cuộc cạnh tranh ngẫu nhiên giữa những người bạn; việc ghi bàn liên quan nhiều đến việc khuyến khích sự tham gia hơn là chiến thắng hoàn toàn.
Blair Holloway

Vâng, đây là một cuộc thi bình thường chứ không phải là một giải đấu nghiêm ngặt. Tôi đồng ý với nhận xét của David, rõ ràng, đó là lý do tại sao tôi đang tìm kiếm một giải pháp ở đây. Cảm ơn vì đầu vào của bạn!
Jemaclus

0

Tôi không biết về thuật toán ELO, nhưng thay vì phạt những người không chơi thường xuyên, bạn có thưởng cho những người chơi thường xuyên không? Chẳng hạn, nếu bạn đạt được điểm số như:

Score = (Wins / Losses) * (Total Games Played) * Some_Scale_Factor

Sau đó, những người chơi thường xuyên có thể sẽ chơi nhiều game hơn và có nhiều cơ hội đạt được điểm cao hơn.

Và một điều khác mà bạn có thể muốn thay đổi là ngăn chặn việc thanh trừng các điểm số cũ có ảnh hưởng đến tổng điểm của người chơi. Đó là lý do chính tại sao người chơi đó tăng lên trong hàng ngũ (và cũng là lý do tại sao cuối cùng anh ta sẽ hoàn toàn rơi khỏi bảng xếp hạng).

Ngoài ra, những người chơi nghiêm túc trong một thời gian và đạt được thành tích tốt, có lẽ sẽ không vui khi biết rằng thành tích của họ cuối cùng sẽ biến mất và biến mất. Hệ thống đó đang làm nản lòng nghiêm trọng.

Điều này có thể dễ dàng khắc phục chỉ bằng cách giữ bộ đệm của "tổng số trò chơi đã chơi" và "tỷ lệ thắng / thua" của mỗi người chơi, ngay cả sau khi bạn tự xóa điểm số.

Với thông tin đó, bạn có thể dễ dàng suy ra lại số lần thắng và thua của người chơi và cập nhật chúng cho phù hợp mỗi khi anh ta chơi lại.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.