{"id":15048003,"url":"https://github.com/incomingstick/openrpg","last_synced_at":"2025-10-04T07:31:04.101Z","repository":{"id":54478643,"uuid":"71913026","full_name":"incomingstick/OpenRPG","owner":"incomingstick","description":"A tool for someone to use to quickly create content for a tabletop RPG world. Libraries for making video games with the d20 system","archived":true,"fork":false,"pushed_at":"2022-11-14T19:50:01.000Z","size":17807,"stargazers_count":135,"open_issues_count":16,"forks_count":26,"subscribers_count":17,"default_branch":"master","last_synced_at":"2025-09-16T03:03:29.836Z","etag":null,"topics":["c","c-plus-plus","cli","cmake","cpp","cpp-library","dnd","dungeons-and-dragons","foss","free-library","game","game-dev","game-development","gui","linux","openrpg","town-generator","travis-ci","turn-based","video-game"],"latest_commit_sha":null,"homepage":"http://openrpg.io","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/incomingstick.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":".github/CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":".github/CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2016-10-25T15:46:54.000Z","updated_at":"2025-08-19T00:48:18.000Z","dependencies_parsed_at":"2022-08-13T17:10:23.145Z","dependency_job_id":null,"html_url":"https://github.com/incomingstick/OpenRPG","commit_stats":null,"previous_names":[],"tags_count":15,"template":false,"template_full_name":null,"purl":"pkg:github/incomingstick/OpenRPG","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/incomingstick%2FOpenRPG","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/incomingstick%2FOpenRPG/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/incomingstick%2FOpenRPG/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/incomingstick%2FOpenRPG/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/incomingstick","download_url":"https://codeload.github.com/incomingstick/OpenRPG/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/incomingstick%2FOpenRPG/sbom","scorecard":{"id":486995,"data":{"date":"2025-08-11","repo":{"name":"github.com/incomingstick/OpenRPG","commit":"24856345cf85a4e47da6e446640e60d36b078794"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":1.7,"checks":[{"name":"Maintained","score":0,"reason":"project is archived","details":["Warn: Repository is archived."],"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"Code-Review","score":0,"reason":"Found 2/28 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":"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":"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":"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":"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":"License","score":9,"reason":"license file detected","details":["Info: project has a license file: LICENSE:0","Warn: project license file does not contain an FSF or OSI license."],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"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":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":"Signed-Releases","score":0,"reason":"Project has not signed or included provenance with any releases.","details":["Warn: release artifact v0.5.2 not signed: https://api.github.com/repos/incomingstick/OpenRPG/releases/22808506","Warn: release artifact v0.5.1 not signed: https://api.github.com/repos/incomingstick/OpenRPG/releases/22500305","Warn: release artifact v0.5.0 not signed: https://api.github.com/repos/incomingstick/OpenRPG/releases/22420736","Warn: release artifact v0.5.2 does not have provenance: https://api.github.com/repos/incomingstick/OpenRPG/releases/22808506","Warn: release artifact v0.5.1 does not have provenance: https://api.github.com/repos/incomingstick/OpenRPG/releases/22500305","Warn: release artifact v0.5.0 does not have provenance: https://api.github.com/repos/incomingstick/OpenRPG/releases/22420736"],"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":-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"}},{"name":"SAST","score":0,"reason":"SAST tool is not run on all commits -- score normalized to 0","details":["Warn: 0 commits out of 5 are checked with a SAST tool"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}},{"name":"Vulnerabilities","score":0,"reason":"10 existing vulnerabilities detected","details":["Warn: Project is vulnerable to: GHSA-wf5p-g6vw-rhxx","Warn: Project is vulnerable to: GHSA-jr5f-v2jv-69x6","Warn: Project is vulnerable to: GHSA-v6h2-p8h4-qcjw","Warn: Project is vulnerable to: GHSA-grv7-fg5c-xmjg","Warn: Project is vulnerable to: GHSA-jchw-25xp-jwwc","Warn: Project is vulnerable to: GHSA-cxjh-pqwp-8mfp","Warn: Project is vulnerable to: GHSA-mwcw-c2x4-8c55","Warn: Project is vulnerable to: GHSA-c2qf-rxjj-qqgw","Warn: Project is vulnerable to: GHSA-76p7-773f-r4q5","Warn: Project is vulnerable to: GHSA-f5x3-32g6-xq36"],"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}}]},"last_synced_at":"2025-08-19T18:04:04.775Z","repository_id":54478643,"created_at":"2025-08-19T18:04:04.775Z","updated_at":"2025-08-19T18:04:04.775Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":278283485,"owners_count":25961309,"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","status":"online","status_checked_at":"2025-10-04T02:00:05.491Z","response_time":63,"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":["c","c-plus-plus","cli","cmake","cpp","cpp-library","dnd","dungeons-and-dragons","foss","free-library","game","game-dev","game-development","gui","linux","openrpg","town-generator","travis-ci","turn-based","video-game"],"created_at":"2024-09-24T21:06:46.473Z","updated_at":"2025-10-04T07:31:03.714Z","avatar_url":"https://github.com/incomingstick.png","language":"C++","readme":"## NOTE\nThis repository is for the back end libraries for OpenRPG. If you are looking for the App, please visit our sister repository, [here](https://github.com/incomingstick/OpenRPG-App).\n\n# OpenRPG\n[![Build Status](https://travis-ci.org/incomingstick/OpenRPG.svg?branch=master)](https://travis-ci.org/incomingstick/OpenRPG)\n![Version Number](https://img.shields.io/badge/version-v0.6.0-blue.svg)\n[![Discord Chat](https://img.shields.io/badge/chat-on%20discord-7289da.svg)](https://discord.gg/xEwaYE5)\n\n[![NPM](https://nodei.co/npm/openrpg-libs.png)](https://nodei.co/npm/openrpg-libs/)\n\nOpenRPG is still in its infancy and I want it to do a lot by v1.0.0!  \nWhat OpenRPG aims to accomplish two fold.  \n\nFirst, it will be a tool for someone to use to quickly create content\nfor a tabletop RPG world. v1.0.0 will focus specifically on the\n5e rules, however I hope to have that expand out to include\nPathfinder and as far back as AD\u0026D.\n\nSecondly, OpenRPG should be structured in such a way that game developers\nthat want to emulate the d20 system in a video game could easily implement\nour libraries in their games to help speed production of back end tools.\n\nSome of the features this tool will include by v1.0.0 are:\n- A GUI front-end for the CLI tools\n- A die simulation tool\n- A name generator tool\n- A character generator tool (with the option to autofill a character sheet)\n- A town generator tool\n- An encounter/combat generator tool\n- A world generator tool\n- A world/town map generator\n\n... And more (hopefully)!\n\nv0.1.0 is a basis for the CLI/developer version, but v1.0.0 will contain a\nportable GUI that works on Windows, Linux, and macOS.\n\n## Installing\n### Arch Linux Install\nWe are now on the Arch User Repository! You can use your favorite AUR wrapper, or simply makepkg.\n\n**AUR Wrapper Example:** `$ yay -S openrpg-git`\n\n**Makepkg Example:** `$ git clone https://aur.archlinux.org/openrpg-git.git \u0026\u0026 cd openrpg-git \u0026\u0026 makepkg -si`\n\nThats it! You should now be able to run the following commands from the command line: `openrpg`, `roll`, `name-generator`, `character-generator` as well as linking against our shared libraries!\n\n### NodeJS (npm) Install\nWe are also available via the NodeJS Package Manager (npm). You may use us in your own node projects by running the command under NPM Dependancy Install example, or install us globally via the NPM Global Install example.\n\n- **NPM Dependancy Install Example:** `$ npm install openrpg-libs`\n- **NPM Global Install Example:** `$ npm install -g openrpg-libs`\n\nWhen installing via `npm` we currently **do not** ensure our CLI binaries are in your path, though they ARE downloaded and installed. The libraries themselves are natively accessable however, and can be used in your JavaScript or TypeScript projects. We provide typings for TypeScript as well!\n\nTo include/import the entirety of OpenRPG in a project simply use one of the following examples, depending on what JavaScript standard you are using:\n\n- CommonJS: `const ORPG = require('openrpg-libs')`\n- ECMAScript: `import * as ORPG from 'openrpg-libs'`\n\nIf you would only like to use specific parts of our library, try the following (this example shows how to use our ExpressionTree class):\n\n- CommonJS: `const ExpressionTree = require('openrpg-libs').ExpressionTree`\n- ECMAScript: `import { ExpressionTree } from 'openrpg-libs'`\n\nOnce included in this way you can then create an ExpressionTree as so:\n\n```js\n// Evaluate a die roll\nexport function die_eval(exp: string) {\n    const parser = new ExpressionTree();\n\n    if (parser.set_expression(exp)) {\n        return parser.parse_expression();\n    }\n\n    return -1;\n}\n```\n\nWhen working on our project we also provide the following `npm` scripts:\n- `npm install`\n- `npm start`\n- `npm test`\n- `npm run build`\n- `npm run build:core`\n- `npm run rebuild` \n- `npm run rebuild:core`\n- `npm run compile`\n- `npm run compile:core`\n- `npm run dist`\n- `npm run dist:core`\n- `npm run dist:electron`\n- `npm run clean`\n\n**NOTE**: Some `npm` scripts have multiple targets. Any `npm` script with the `:core` target uses the build.js script to run instead of directly through `cmake-js`. This means they will not target the `orpgNode` binary, only targeting the core libraries and binaries. If the npm script has the `:electron` target, it builds against the Electron NodeJS version used by [OpenRPG-App](https://github.com/incomingstick/OpenRPG-App) instead of defaulting to the locally installed NodeJS version.\n\n### Manually Installing from Source\nAfter following any of the [Building](#Building) instructions below, in the `build/` folder, run make install `$ make install`\n\n## Building\nCurrently we require `cmake` (at least v3.0) and `make`, and your choice of C/C++\ncompiler that supports the C++17 standard. You may also use `npm` to assist with the building and testing process.\n\n**Note**: This project strives to keep its source as clean of any dependancies to be as cross platform as possible. If you have suggestions or improvements to help move toward that goal, please feel free to open issues, or even a Pull Request!\n\n### Linux Build Script\nThe build script now provides some extra assistance with building, installing, uninstalling and more.\n\n- **Debug build:** `$ ./build.sh`\n- **Install debug build:** `$ ./build.sh install`\n- **Release build:** `$ ./build.sh release`\n- **Install release build:** `$ ./build.sh release install`\n- **Clean build files:** `$ ./build.sh clean`\n- **Clean build files and rebuild:** `$ ./build.sh rebuild`\n\n**NOTE**: `build.sh` has the potential to work on MacOS, but is currently untested. If you happen to use a Mac, please help us test this!\n\n### Windows Build Script\nThis script is VERY minimal compared to its bash counterpart. It could use a ton of improvements, so if that is something you are interested in, open a PR! Please make sure you have Visual Studio Build Tools (i.e msbuild) in your `%PATH%`.\n\n- **Debug build:** `\u003e .\\build.bat`\n- **Release build:** `\u003e .\\build.bat release`\n- **Clean build files:** `\u003e .\\build.bat clean`\n- **Clean build files and rebuild:** `\u003e .\\build.bat rebuild`\n\n### Node Build Script\nThe Node build script (`build.js`) is used to assist with `npm` scripts. In general, the `build.js` script just checks the OS and calls the equivalant build script above. However, this script does have the additional target `download` that the Batch and Bash scripts do not contain. Calling this target will download precompiled binaries for your OS and put them in the local `dist/` folder. This is called when `npm install` is run on our package.\n\nTo download the precompiled binaries run `$ node build.js download`\n\n**NOTE**: When calling this target, it will clear the current `dist/` folder before moving the downloaded files to this folder.\n\n### Manual Build\n1. Create a build directory `$ mkdir build`  \n2. Move to the build directory `$ cd build`\n3. Run cmake `$ cmake ..`\n    - **Optionally**: `$ cmake -DCMAKE_INSTALL_PREFIX=/desired/install/location ..`  \n4. Run make `$ make`  \n\n### Check Integrity of Build\nIn the `build/` folder, run make check `$ make check` \n\n# License\nOpenRPG Software License - Version 1.0 - February 10th, 2017 \u003chttps://openrpg.io/about/license/\u003e\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fincomingstick%2Fopenrpg","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fincomingstick%2Fopenrpg","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fincomingstick%2Fopenrpg/lists"}