{"id":45147039,"url":"https://github.com/miscellaneousstuff/pylol","last_synced_at":"2026-02-20T02:01:01.268Z","repository":{"id":43384149,"uuid":"311316264","full_name":"MiscellaneousStuff/pylol","owner":"MiscellaneousStuff","description":"League of Legends v4.20 RL Environment (LoLRLE)","archived":false,"fork":false,"pushed_at":"2025-02-23T08:34:17.000Z","size":222,"stargazers_count":18,"open_issues_count":0,"forks_count":2,"subscribers_count":3,"default_branch":"main","last_synced_at":"2025-09-22T19:55:01.289Z","etag":null,"topics":["league-of-legends","machine-learning","reinforcement-learning"],"latest_commit_sha":null,"homepage":"","language":"Python","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/MiscellaneousStuff.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,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2020-11-09T11:25:24.000Z","updated_at":"2025-06-25T09:00:19.000Z","dependencies_parsed_at":"2026-02-20T02:00:57.321Z","dependency_job_id":null,"html_url":"https://github.com/MiscellaneousStuff/pylol","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/MiscellaneousStuff/pylol","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MiscellaneousStuff%2Fpylol","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MiscellaneousStuff%2Fpylol/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MiscellaneousStuff%2Fpylol/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MiscellaneousStuff%2Fpylol/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/MiscellaneousStuff","download_url":"https://codeload.github.com/MiscellaneousStuff/pylol/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MiscellaneousStuff%2Fpylol/sbom","scorecard":{"id":94892,"data":{"date":"2025-08-11","repo":{"name":"github.com/MiscellaneousStuff/pylol","commit":"29482c27753eb93720e1a227547b686686f836ce"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":3,"checks":[{"name":"Packaging","score":-1,"reason":"packaging workflow not detected","details":["Warn: no GitHub/GitLab publishing workflow detected."],"documentation":{"short":"Determines if the project is published as a package that others can easily download, install, easily update, and uninstall.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#packaging"}},{"name":"Dangerous-Workflow","score":-1,"reason":"no workflows found","details":null,"documentation":{"short":"Determines if the project's GitHub Action workflows avoid dangerous patterns.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#dangerous-workflow"}},{"name":"Token-Permissions","score":-1,"reason":"No tokens found","details":null,"documentation":{"short":"Determines if the project's workflows follow the principle of least privilege.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#token-permissions"}},{"name":"Code-Review","score":0,"reason":"Found 0/30 approved changesets -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project requires human code review before pull requests (aka merge requests) are merged.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#code-review"}},{"name":"Maintained","score":0,"reason":"0 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"SAST","score":0,"reason":"no SAST tool detected","details":["Warn: no pull requests merged into dev branch"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}},{"name":"Binary-Artifacts","score":10,"reason":"no binaries found in the repo","details":null,"documentation":{"short":"Determines if the project has generated executable (binary) artifacts in the source repository.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#binary-artifacts"}},{"name":"Pinned-Dependencies","score":-1,"reason":"no dependencies found","details":null,"documentation":{"short":"Determines if the project has declared and pinned the dependencies of its build process.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#pinned-dependencies"}},{"name":"CII-Best-Practices","score":0,"reason":"no effort to earn an OpenSSF best practices badge detected","details":null,"documentation":{"short":"Determines if the project has an OpenSSF (formerly CII) Best Practices Badge.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#cii-best-practices"}},{"name":"Security-Policy","score":0,"reason":"security policy file not detected","details":["Warn: no security policy file detected","Warn: no security file to analyze","Warn: no security file to analyze","Warn: no security file to analyze"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#security-policy"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":["Warn: no fuzzer integrations found"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#fuzzing"}},{"name":"Vulnerabilities","score":10,"reason":"0 existing vulnerabilities detected","details":null,"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}},{"name":"License","score":10,"reason":"license file detected","details":["Info: project has a license file: LICENSE:0","Info: FSF or OSI recognized license: MIT License: LICENSE:0"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"name":"Signed-Releases","score":-1,"reason":"no releases found","details":null,"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"name":"Branch-Protection","score":0,"reason":"branch protection not enabled on development/release branches","details":["Warn: branch protection not enabled for branch 'main'"],"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#branch-protection"}}]},"last_synced_at":"2025-08-15T08:44:43.760Z","repository_id":43384149,"created_at":"2025-08-15T08:44:43.760Z","updated_at":"2025-08-15T08:44:43.760Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29638772,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-19T22:32:43.237Z","status":"online","status_checked_at":"2026-02-20T02:00:07.535Z","response_time":59,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"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":["league-of-legends","machine-learning","reinforcement-learning"],"created_at":"2026-02-20T02:00:49.434Z","updated_at":"2026-02-20T02:01:01.260Z","avatar_url":"https://github.com/MiscellaneousStuff.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cdiv align=\"center\"\u003e\r\n    \u003ca href=\"https://www.youtube.com/watch?v=yVUKi63WfDA\"\r\n       target=\"_blank\"\u003e\r\n       \u003cimg src=\"http://img.youtube.com/vi/yVUKi63WfDA/0.jpg\"\r\n            alt=\"Example PPO implementation in League of Legends\"\r\n            width=\"240\" height=\"180\" border=\"10\" /\u003e\r\n    \u003c/a\u003e\r\n\u003c/div\u003e\r\n\r\n# PyLoL - League of Legends v4.20 Learning Environment\r\n[![Downloads](https://pepy.tech/badge/pylol-rl)](https://pepy.tech/project/pylol-rl)\r\n[![Downloads](https://pepy.tech/badge/pylol-rl/month)](https://pepy.tech/project/pylol-rl)\r\n[![Downloads](https://pepy.tech/badge/pylol-rl/week)](https://pepy.tech/project/pylol-rl)\r\n\r\nPyLoL is the Python component of the League of Legends v4.20 Learning Environment (using a modified version of the LeagueSandbox's GameServer project, not the original server from Riot). It exposes a custom machine learning API for the GameServer project as a Python RL Environment. PyLoL provides an interface for RL agents to interact with the League of Legends v4.20, getting observations and sending actions.\r\n\r\n## About\r\n\r\nDisclaimer: This project is not affiliated with Riot Games in any way.\r\n\r\nIf you are interested in using this project or are just curious,\r\nsend an email to [raokosan@gmail.com](mailto:raokosan@gmail.com).\r\n\r\n# Quick Start Guide\r\n\r\n## Google Colab\r\n\r\nThe easiest way to try pylol at the moment is to visit this Google Colab:\r\n\r\n[![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/MiscellaneousStuff/pylol-demo/blob/main/demonstration.ipynb)\r\n\r\nWithin the demonstration, you can try different agents by changing the \"--agent\"\r\nparameter to either random, base or scripted. Random will choose random actions\r\nfrom the action space uniformly, base will just issue no-ops (i.e. no operation,\r\nit will do nothing) and scripted will have the agents just attack each other.\r\n\r\n## Get PyLoL\r\n\r\n### PyPI\r\n\r\nThe easiest way to get PyLoL is to use pip:\r\n\r\n```shell\r\npip install pylol-rl\r\n```\r\n\r\nThat will install the `pylol` package along with all the required dependencies.\r\nvirtualenv can help manage your dependencies. You may also need to upgrade pip:\r\n`pip install --upgrade pip` for the `pylol` dependency.\r\n\r\n### From Source\r\n\r\nYou can install PyLoL from a local clone of the git repo:\r\n\r\n```shell\r\ngit clone https://github.com/MiscellaneousStuff/pylol.git\r\npip install --upgrade pylol/\r\n```\r\n\r\n## Config\r\n\r\nOnce you have PyLoL installed, you will need to create a config.txt file with\r\nthe following format:\r\n\r\n```config\r\n[dirs]\r\ngameserver = .../LeagueSandbox-RL-Learning/GameServerConsole/bin/Debug/netcoreapp3.0/\r\nlolclient = .../RADS/solutions/lol_game_client_sln/releases/0.0.1.68/deploy/\r\n```\r\n\r\nNOTE: You do not need to have the League of Legends client installed to use PyLoL,\r\nyou only need the GameServer installed. If you do not have the League of Legends\r\nclient installed, leave the `lolclient` option as follows\r\n\r\n```config\r\n[dirs]\r\ngameserver = .../LeagueSandbox-RL-Learning/GameServerConsole/bin/Debug/netcoreapp3.0/\r\nlolclient = \r\n```\r\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmiscellaneousstuff%2Fpylol","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmiscellaneousstuff%2Fpylol","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmiscellaneousstuff%2Fpylol/lists"}