{"id":18468311,"url":"https://github.com/instilledbee/elo-dotnet","last_synced_at":"2025-05-06T16:36:52.513Z","repository":{"id":230486296,"uuid":"773904307","full_name":"instilledbee/elo-dotnet","owner":"instilledbee","description":"An ELO calculation framework for .NET","archived":false,"fork":false,"pushed_at":"2024-03-30T03:36:26.000Z","size":17,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-02-16T18:23:55.272Z","etag":null,"topics":["csharp","elo-rating","elo-rating-system","net-standard"],"latest_commit_sha":null,"homepage":"","language":"C#","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/instilledbee.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null}},"created_at":"2024-03-18T15:48:58.000Z","updated_at":"2024-03-30T03:30:47.000Z","dependencies_parsed_at":"2024-03-30T03:56:14.808Z","dependency_job_id":null,"html_url":"https://github.com/instilledbee/elo-dotnet","commit_stats":null,"previous_names":["instilledbee/elo-dotnet"],"tags_count":1,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/instilledbee%2Felo-dotnet","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/instilledbee%2Felo-dotnet/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/instilledbee%2Felo-dotnet/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/instilledbee%2Felo-dotnet/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/instilledbee","download_url":"https://codeload.github.com/instilledbee/elo-dotnet/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":252721582,"owners_count":21793852,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["csharp","elo-rating","elo-rating-system","net-standard"],"created_at":"2024-11-06T10:05:46.131Z","updated_at":"2025-05-06T16:36:52.486Z","avatar_url":"https://github.com/instilledbee.png","language":"C#","funding_links":[],"categories":[],"sub_categories":[],"readme":"# EloDotNet\nAn ELO calculation framework for .NET\n\n# Getting Started\nThe easiest way to get started is to add the [NuGet package](https://www.nuget.org/packages/EloDotNet) to your project.\n\nReleases are also tagged and downloadable from this repository.\n\n# Building\nYou may build your own copy of the package from the latest code by pulling from this repository. All of the projects are contained within the solution file (`EloDotNet.sln`).\n\n# Usage\nThe package provides the following classes:\n* `Player` - represents a participant in the Elo ranking system. Typically uniquely identified with a `Guid` property.\n* `Match` - represents the participation of two `Player`s in the system. \n   * Describes the match results (who won/lost, or if the match was a draw). \n   * A `Match` can only have one `Result` - whether the first or second player won, or if the match was a draw.\n* `RankingSystem` - encapsulates a collection of participating `Player`s, and a list of `Match`es each player has participated in.\n\nNote that for purposes of Elo calculation, all `Player`s must be registered via `RankingSystem.RegisterPlayer()`, and all `Match`es must be recorded via `RankingSystem.RecordMatch()`.\n\n# Extending\nAll default classes in EloDotNet implement their respective interfaces:\n* `IPlayer\u003cTId\u003e` - interface for a player entity with a unique identifier of type `TId`.\n   * Note that `TId` must implement `IEquatable\u003cTId\u003e`.\n* `IMatch\u003cTPlayer, TIndex\u003e` - interface for a match entity between two `TPlayer` entities, and where each match can be ordered using the `TIndex` property. \n   * Note that `TPlayer` must implement `IPlayer\u003cTId\u003e`.\n   * `TIndex` must implement `IComparable\u003cTIndex\u003e`.\n* `IRankingSystem\u003cTPlayer, TMatch\u003e` - interface for a ranking system of `TPlayer` entities participating in `TMatch` matches.\n   * Note that `TPlayer` must implement `IPlayer\u003cTId\u003e`.\n   * Note that `TMatch` must implement `IMatch\u003cTPlayer, TIndex\u003e`.\n\nThus, it is possible to roll your own player, match and ranking system implementations.\n\n* `RankingSystem` also exposes a generic version with a default implementation, e.g. `RankingSystem\u003cIPlayer\u003cTId\u003e, IMatch\u003cTId, TIndex\u003e\u003e`. \n   * This allows you to replace the player and match types while keeping the default Elo calculation algorithm, for instance.\n\n# Sample Code\nPlease check the test project `EloDotNet.Tests` to see sample snippets on how to use the default `RankingSystem`, as well as creating your custom `IMatch` and `IPlayer` implementations, and integrating them into a custom `IRankingSystem` implementation, with its own Elo calculation algorithm.\n\nAs more projects adapt EloDotNet, they'll be featured here for reference!","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Finstilledbee%2Felo-dotnet","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Finstilledbee%2Felo-dotnet","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Finstilledbee%2Felo-dotnet/lists"}