{"id":13528888,"url":"https://github.com/GameMakerDiscord/Rubber","last_synced_at":"2025-04-01T14:33:26.989Z","repository":{"id":44454222,"uuid":"115880873","full_name":"GameMakerDiscord/Rubber","owner":"GameMakerDiscord","description":"Javascript GMS2 commandline compilation","archived":false,"fork":false,"pushed_at":"2021-02-20T04:12:08.000Z","size":77,"stargazers_count":31,"open_issues_count":5,"forks_count":11,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-03-18T03:43:54.753Z","etag":null,"topics":["gamemaker","gms2","javascript","tool"],"latest_commit_sha":null,"homepage":"","language":"TypeScript","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/GameMakerDiscord.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE.md","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2017-12-31T19:06:26.000Z","updated_at":"2025-01-31T05:35:26.000Z","dependencies_parsed_at":"2022-09-26T17:01:17.921Z","dependency_job_id":null,"html_url":"https://github.com/GameMakerDiscord/Rubber","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/GameMakerDiscord%2FRubber","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/GameMakerDiscord%2FRubber/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/GameMakerDiscord%2FRubber/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/GameMakerDiscord%2FRubber/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/GameMakerDiscord","download_url":"https://codeload.github.com/GameMakerDiscord/Rubber/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":246655386,"owners_count":20812624,"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":["gamemaker","gms2","javascript","tool"],"created_at":"2024-08-01T07:00:27.415Z","updated_at":"2025-04-01T14:33:21.976Z","avatar_url":"https://github.com/GameMakerDiscord.png","language":"TypeScript","readme":"# Rubber\nWrapper for IGOR.exe, aka compile gamemaker projects via command line.\n\nThis tool is called from the command line, takes in a yyz/yyp and output a zip, installer,\nor just run the game. For now, this only runs on windows, compiling to windows. Alternativly\nthere is an api that you can call from javascript. Running this program requires that you have\na valid GameMaker Studio 2 installation and have purchased the selected module (you cannot compile\nto Windows if you only own HTML Exporting)\n\nMaintained by: [dave caruso](https://github.com/davecaruso)\n\n## Notes\nI would like some of these untested features to be confirmed to work or fail, so that it can be resolved.\n\n- ~~Project using shaders might not work~~ **Works**\n- Using steam is not tested\n- Running on mac not supported.\n- Using configurations not tested\n\n## Setup\n\nYou will need installed\n1. GameMaker Studio 2 Desktop (inside it's default install directory).\n1. Node.js with npm installed.\n\nTo install rubber globally, run `npm i -g gamemaker-rubber`, and you should be all good.\n\nTo use rubber as a dependency, you would use `npm i gamemaker-rubber`\n\n## Usage\n`rubber [options] path/to/project.yyp [output file]`\n\n**Options**\n\n| Option          | Actions                        |\n| --------------- | ------------------------------ |\n| -Z, --zip       | Creates a zip archive          |\n| -I, --installer | Creates a installer package    |\n| -y, --yyc       | Compiles with YYC              |\n| -v, --version   | Display the current version    |\n| -c, --config    | Sets the configuration         |\n| -h, --help      | Display help and usage details |\n\n## Examples\n- `rubber project_folder` Launch the yyp file in `%cd%/project_folder` as if you pressed F5 in gamemaker\n- `rubber .` Launch the yyp file in the current folder as if you pressed F5 in gamemaker\n- `rubber --yyc --zip .` Compile the yyp file in the current folder to a zip file with yyc\n- `rubber --yyc --zip project.yyp` Compile `%cd%/project.yyp` in the current folder to a zip file with yyc\n- `rubber --yyc -I project.yyp` Compile `%cd%/project.yyp` in the current folder to an installer with yyc\n\n\n## Nodejs API Usage\nTo use Rubber as a dependency, install it to your project with `npm i gamemaker-rubber`, it includes\ntype definitions.\n\n### Basic Compile\n```js\nconst build = rubber.windows({\n    projectPath: \"path/to/game.yyp\",\n    build: \"run\"\n});\nbuild.on(\"compileStatus\", (data) =\u003e {\n    process.stdout.write(data);\n});\nbuild.on(\"gameStatus\", (data) =\u003e {\n    process.stdout.write(data);\n});\nbuild.on(\"allFinished\", () =\u003e {\n    console.log(\"Compile Finished\");\n});\n```\nRubber uses an asyncronous EventEmitter to give out status updates, so you can listen to certain\nevents, but not others, and use it to stream the entire output of IGOR (the compiler) to somewhere\nlike the standard output (shown above).\n\n### Events\n#### compileStarted\nEmitted when the compile process starts\n\n#### compileFinished\nEmitted when the **compile process is finished, the game might be launched at this point**. Sends an array of\nall errors in the compile process.\n\n#### compileStatus\nEmitted with a `data` paramater, containing a string of output data. When displaying this data\ndo not manually add a newline (console.log does it)\n\n#### gameStarted\nEmitted when the game starts, not always emitted.\n\n#### gameStatus\nEmitted with a `data` paramater, containing a string of output data from the game process.\n\n#### gameFinished\nEmitted when the game closes, not always emitted.\n\n#### allFinished\nEmitted when everything is finished, always emitted at the end. Sends an array of\nall errors in the compile process, exactly the same array as from the compileFinished message.\n\n#### rawStdout\nEmitted with a `data` paramater, containing a chunk of raw output data from IGOR.\n\n#### error\nEmitted when some kind of error happens.\n","funding_links":[],"categories":["Tools"],"sub_categories":["Recommendations"],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FGameMakerDiscord%2FRubber","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FGameMakerDiscord%2FRubber","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FGameMakerDiscord%2FRubber/lists"}