{"id":13530428,"url":"https://github.com/collinsmith/riiablo","last_synced_at":"2026-01-16T19:20:17.879Z","repository":{"id":41151887,"uuid":"44467072","full_name":"collinsmith/riiablo","owner":"collinsmith","description":"Diablo II remade using Java and LibGDX","archived":false,"fork":false,"pushed_at":"2025-01-13T06:57:44.000Z","size":29038,"stargazers_count":963,"open_issues_count":79,"forks_count":106,"subscribers_count":55,"default_branch":"master","last_synced_at":"2025-04-01T18:50:22.524Z","etag":null,"topics":["android","desktop","diablo","engine","game","java","libgdx"],"latest_commit_sha":null,"homepage":"http://riiablo.com","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/collinsmith.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":"AUTHORS","dei":null,"publiccode":null,"codemeta":null}},"created_at":"2015-10-18T05:41:54.000Z","updated_at":"2025-03-26T05:43:01.000Z","dependencies_parsed_at":"2024-01-03T03:58:10.675Z","dependency_job_id":"7bc78532-8084-4340-a56e-aae74ac4357b","html_url":"https://github.com/collinsmith/riiablo","commit_stats":null,"previous_names":[],"tags_count":4,"template":false,"template_full_name":null,"purl":"pkg:github/collinsmith/riiablo","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/collinsmith%2Friiablo","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/collinsmith%2Friiablo/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/collinsmith%2Friiablo/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/collinsmith%2Friiablo/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/collinsmith","download_url":"https://codeload.github.com/collinsmith/riiablo/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/collinsmith%2Friiablo/sbom","scorecard":{"id":300260,"data":{"date":"2025-08-11","repo":{"name":"github.com/collinsmith/riiablo","commit":"59aa8d5021c457e8d2891bb23c9e3a0ef724c6b3"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":2.8,"checks":[{"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":"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":"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":"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":"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":"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":"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":"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":"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: Apache License 2.0: 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":"Binary-Artifacts","score":8,"reason":"binaries present in source code","details":["Warn: binary detected: flatbuffers/flatc.exe:1","Warn: binary detected: gradle/wrapper/gradle-wrapper.jar:1"],"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":"Signed-Releases","score":0,"reason":"Project has not signed or included provenance with any releases.","details":["Warn: release artifact v0.0.4 not signed: https://api.github.com/repos/collinsmith/riiablo/releases/43791892","Warn: release artifact v0.0.3 not signed: https://api.github.com/repos/collinsmith/riiablo/releases/36408984","Warn: release artifact v0.0.2 not signed: https://api.github.com/repos/collinsmith/riiablo/releases/34865418","Warn: release artifact v0.0.1 not signed: https://api.github.com/repos/collinsmith/riiablo/releases/34337664","Warn: release artifact v0.0.4 does not have provenance: https://api.github.com/repos/collinsmith/riiablo/releases/43791892","Warn: release artifact v0.0.3 does not have provenance: https://api.github.com/repos/collinsmith/riiablo/releases/36408984","Warn: release artifact v0.0.2 does not have provenance: https://api.github.com/repos/collinsmith/riiablo/releases/34865418","Warn: release artifact v0.0.1 does not have provenance: https://api.github.com/repos/collinsmith/riiablo/releases/34337664"],"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"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":"Pinned-Dependencies","score":-1,"reason":"no dependencies found","details":["Info: Possibly incomplete results: error parsing shell code: invalid UTF-8 encoding: gradlew:0"],"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":"Branch-Protection","score":-1,"reason":"internal error: error during branchesHandler.setup: internal error: githubv4.Query: Resource not accessible by integration","details":null,"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-17T20:25:09.950Z","repository_id":41151887,"created_at":"2025-08-17T20:25:09.950Z","updated_at":"2025-08-17T20:25:09.950Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28481675,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-16T11:59:17.896Z","status":"ssl_error","status_checked_at":"2026-01-16T11:55:55.838Z","response_time":107,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"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":["android","desktop","diablo","engine","game","java","libgdx"],"created_at":"2024-08-01T07:00:49.700Z","updated_at":"2026-01-16T19:20:17.846Z","avatar_url":"https://github.com/collinsmith.png","language":"Java","readme":"# Riiablo\n\n[Join us on Discord!](https://discord.gg/qRbWYNM)\n\nThis is my attempt at rebuilding Diablo II from scratch. There is still a long\nway to go, but a lot of the core is there. The game itself uses 100% original\nDiablo II assets which are not (and will never be) provided, i.e., you should\nalready own a copy of the game to play this. I am going to do my best to remain\nfaithful to the original game, however I am planning on changing and adding\nadditional features as I think they become necessary (e.g., auto gold pickup).\nI will write articles in the future explaining how I was able to accomplish\ncertain things, and how some core systems work.\n\nUnlike the original game, this version supports just about any reasonable\naspect ratio (4:3, 16:9, 18:9, 21:9), however by design I'm locking the game to\n480px in height because the original game assets are all geared for that (i.e.,\nthe width is dynamic). The expansion did introduce 800x600 support, and I may\nend up supporting for the desktop version in the future (specifically for some\nmultiplayer lobby stuff), but it's not necessary for the core functionality. The\nmobile version currently uses 360px height to make selecting UI elements easier,\nhowever since much of the UI panels are 480px, in-game is locked at 480px, but I\nwill change this in the future or at least provide scaling on a per-component\nbasis (text). This does run on Android, and I have been using a Galaxy Note 5 as\nthe min spec when testing, but older phones may work as well, especially after\noptimizations have been made. I can already play Diablo II on PC, my goal is to\nbe able to sit back and play it casually with my friends while also supporting\ncross-platform play. This game supports local play that can then be taken online\n(similar to Open Battle.net), with a more secure option being far beyond that.\n\n*NOTE: This is not playable yet, but the game runs and you can load save files,\nwalk around a bit and look at your characters.* Game saves are not modified\nyet, and 1.13c+ saves are supported (support for some other versions may be\nadded in the future, but it isn't a priority, and I expect most people to\ncreate new characters anyways). I do not plan on, or want to make this game\ncompatible with playing with users using the original game client.\n\n[![SP Test](/screenshots/single_player.webp)](https://www.youtube.com/watch?v=oKYNsIPr0tY)\n\n# Features\n- Written using Java + LibGDX + OpenGL + Flatbuffers + Netty\n- Runs on PC, Android and eventually more (IOS, Linux, etc.)\n- Cross-platform multiplayer\n- Dedicated servers, TCP/IP (listen servers), and single player\n- Full console, including CVAR support and custom key bindings\n- Controller support\n- Platform-specific features (Android touch, PC mouse, etc)\n- Scalable UI\n\n# Screenshots\n![In-Game](/screenshots/Clipboard-1.png)\n![Create Character](/screenshots/Clipboard-2.png)\n![Paladin](/screenshots/Clipboard-5.png)\n![Android](/screenshots/Android-1.png)\n[![MP Test](/screenshots/multi_player.webp)](https://www.youtube.com/watch?v=B2XhiS_JbIA)\n\n# Setup\nThe Android SDK is required to build the android subproject project.\n\nTwo environment variables can be used to automatically set the D2 installation\nand save directories if they are not automatically detected, and you do not want\nto use command-line arguments every time you launch the game.\n```bash\nD2_HOME=/Diablo2\nD2_SAVE=/Diablo2/Save\n```\n\nOtherwise, using the `--help` command-line argument will show a list of all\navailable options -- including manually specifying your D2 installation.\n\n#### Building\n```bash\ngit clone https://github.com/collinsmith/riiablo.git\ncd riiablo\ngradlew desktop:run\n```\n\n#### Windows\nTypical D2 installations should be automatically detected and configured\n(including existing saved games). If a D2 installation cannot be detected (or\nyou would like to do something like change which saved games to use), see\nthe above instructions on using command-line arguments.\n\n#### Linux / MacOS\nThis project was developed using the native Win32 MPQ files, so you will need\nto copy them from your Windows installation (whether that be Wine or just a\ncopy of the files). Detection of the MPQs may be spotty and require manually\nspecifying them via command-line arguments or environment variables (see above).\n\n#### Android\nDebug APKs can be created with `gradlew android:assembleDebug`, however\nconfiguring the app on a device is a bit of a pain at this time unless you can\nmanually copy the resources from your Win32 installation onto your device in the\napp data directory. This will require having `logcat` running so that you can\nsee any errors it spits out about where it's looking for the files. This process\nwill be made easier in the future.\n\n#### IntelliJ\n- [Importing into Intellij/Android Studio](https://libgdx.badlogicgames.com/documentation/gettingstarted/Importing%20into%20IDE.html#intellij)\n- Default run configurations are provided within [.idea/runConfigurations](/.idea/runConfigurations).\nThe default resolution is 854x480, other configurations are provided to ensure\na wide range of support `--windowed` arg can be used to start in windowed mode,\nwhile `F12` can be used in-game to disable the debug UI.\n- Environment variables `D2_HOME` and `D2_SAVE` can be used if you are a pluggy\nuser.\n\n# Tools\nAside from the main tools below, other tools are contained within `:tools`. To\nview all available tools, use `gradlew :tools:projects -q`. `--help` is your\nfriend.\n\n# MPQ Viewer\nAllows you to look at the game's assets and debug issues with specific files.\nNot all file types are supported at this time, but those should hopefully come\nin the future. This is a tool used in development and is not a replacement for\ntools like DR Test, but does provide the same functionality.\n\u003cdetails\u003e\n\t\u003csummary\u003eScreenshot\u003c/summary\u003e\n\t\u003cimg src=\"https://raw.githubusercontent.com/collinsmith/diablo/master/screenshots/Clipboard-3.png\" alt=\"MPQ Viewer\"\u003e\n\u003c/details\u003e\n\n# Map Viewer\nTests the map building algorithm/renderer. This is very basic at the moment.\n\u003cdetails\u003e\n\t\u003csummary\u003eScreenshot\u003c/summary\u003e\n\t\u003cimg src=\"https://raw.githubusercontent.com/collinsmith/diablo/master/screenshots/Clipboard-4.png\" alt=\"Map Builder\"\u003e\n\u003c/details\u003e\n\n# Developed Using:\n[![IntelliJ IDEA Logo](/resources/icon-intellij-idea-128x128.png)](https://www.jetbrains.com/?from=riiablo)\n","funding_links":[],"categories":["RPG","Java"],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcollinsmith%2Friiablo","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcollinsmith%2Friiablo","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcollinsmith%2Friiablo/lists"}