{"id":19721744,"url":"https://github.com/rmex/buildozer","last_synced_at":"2025-10-08T10:51:21.182Z","repository":{"id":78202180,"uuid":"120910418","full_name":"RMEx/buildozer","owner":"RMEx","description":"Externalize all scripts from Scripts.rvdata2","archived":false,"fork":false,"pushed_at":"2023-07-24T09:56:08.000Z","size":2265,"stargazers_count":22,"open_issues_count":0,"forks_count":2,"subscribers_count":8,"default_branch":"master","last_synced_at":"2025-07-28T12:44:34.583Z","etag":null,"topics":["externalization","rgss","rgss3","rpg-maker","rpg-maker-vxace","rpgmaker","ruby","scripts"],"latest_commit_sha":null,"homepage":"","language":"Ruby","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/RMEx.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}},"created_at":"2018-02-09T13:42:34.000Z","updated_at":"2025-04-26T05:48:56.000Z","dependencies_parsed_at":"2025-04-29T21:43:31.229Z","dependency_job_id":null,"html_url":"https://github.com/RMEx/buildozer","commit_stats":null,"previous_names":[],"tags_count":2,"template":false,"template_full_name":null,"purl":"pkg:github/RMEx/buildozer","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/RMEx%2Fbuildozer","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/RMEx%2Fbuildozer/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/RMEx%2Fbuildozer/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/RMEx%2Fbuildozer/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/RMEx","download_url":"https://codeload.github.com/RMEx/buildozer/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/RMEx%2Fbuildozer/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":278931653,"owners_count":26070788,"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-08T02:00:06.501Z","response_time":56,"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":["externalization","rgss","rgss3","rpg-maker","rpg-maker-vxace","rpgmaker","ruby","scripts"],"created_at":"2024-11-11T23:15:24.398Z","updated_at":"2025-10-08T10:51:21.176Z","avatar_url":"https://github.com/RMEx.png","language":"Ruby","readme":"[Join us on Discord !](https://discord.gg/yRUZcdQ)\n\n# [![RMEx](http://rmex.github.io/images/rmex-shortcut.png)](http://rmex.github.io) scripts-externalizer\n\u003e Externalize all scripts from Scripts.rvdata2 (script for RMVXAce)\n\u003e\n\u003e **scripts-externalizer**, **scripts-loader** and **scripts-compiler** allow you to use your favorite IDE instead of the RPG Maker script editor!\n\n***\n## About using the default script editor\n\n\n* The scripts in RMVXAce are **compiled** into **Scripts.rvdata2**, you are obliged to open the **script editor** to change things, or when you use your favorite IDE, you are obliged to copy/paste your work into the script editor.\n* It's a pain in the ass to open/close the script editor each time you want to change a little thing in your script.\n* When you want to see how the default scripts works, and what method to overwrite, you are obliged to open the script editor. It's akward when you are actually using your favorite IDE. (I'm used to copy/paste from the script editor to the IDE when I'm working on scripts)\n* The script editor is limited when you are used to actual IDE, you miss a bunch of shortcut and a more readable interface\n* Some scripts like [the great RME](https://github.com/RMEx/RME) are divided into multiple scripts (it's way clearer when the hole script is very big)... well, do you want to copy/paste like 14 scripts into the script editor one by one?\n\n***\n## What is externalization?\n\nThe **externalization** is the way of working with **external scripts**, they are **ruby files** (foo.rb). The project will load your scripts files and rock with them, even if your scripts aren't into the script editor!\n\nTo put it simply, you can externalize a script by yourself using the simple function:\n```\nKernel.send(:load, 'yourpath/yourscript.rb')\n```\nor :\n```\nKernel.send(:require, 'yourpath/yourscript.rb')\n```\n\n`Kernel.load` and `Kernel.require` exist in Ruby 1.9.2 but the RGSS3 privatized them... Lucky that we still can use the *SUPER TRICK* of `.send`!\n\nThe difference between `:load` and `:require` is that `:require` will not load two times the same script. `:require` is recommanded when you want to manage dependency between multiple scripts.\n\nI propose to use those functions smartly, by using my scripts!\n\n***\n## What about the *scripts-externalizer*, *loader* and *compiler*?\n\n**There is three way of utilising those scripts:**\n\n* Externalize just the scripts you want with **scripts-loader**\n* Externalize all scripts including the default scripts with **scripts-externalizer**\n* Compiling the external scripts into the Scripts.rvdata2 with **scripts-compiler**\n***\n# Externalize just the scripts you want\n\nIt's quite simple:\n* Copy/paste the **scripts-loader** into the script editor, in Materials.\n* Create the folder \"**Scripts**\" in your project\n* Create a \"**_list.rb**\" into the folder \"**Scripts**\"\n* Create any \"**mysuperscript.rb**\" you want into the folder \"**Scripts**\" and add their names into the **_list.rb**\n\nFor example:\n![screenshot](http://biloucorp.com/BCW/Joke/sample2.png)\n\n![screenshot](http://biloucorp.com/BCW/Joke/sample1.png)\n\nInto the \"**_list.rb**\", there is just:\n```\nFullscreen++\norms\n```\nThose two scripts will be loaded at the same time of **scripts-loader**\n\nIf you want to **deactivate** Fullscreen++, just put a \"**#**\" in front of the name:\n```\n#Fullscreen++\norms\n```\nThat's PERFECT for debugging!\n\nThe \"**_list.rb**\" is very important because it defines in which order your scripts will be loaded.\n\nFor example:\n```\norms\nFullscreen++\n```\n**orms** will be loaded before **Fullscreen++** (what it is precisely NOT what to do since **orms** manages the compatibility between the two)\n\n---\n## Create sub-folders in \"Scripts\"\n\nYou can easily create any folder you want, even folders into folders\n\nYou must specify the folder by adding his name into the \"**_list.rb**\", with a \"**/**\" after (and not a \"**\\\\**\", be careful)\n```\nRME/\nFullscreen++\norms\n```\nInto your new folder, you have to create a new \"**_list.rb**\" to define the order of the scripts and the next sub-folders.\nFor example, in the folder \"**RME**\", you have this \"**_list.rb**\":\n```\nEvent_printer\nSDK.Sample\nSamples\nSDK\nDatabase\nInternal \nEvEx \nCommands \nIncubator\nDocGenerator\nDoc \nSDK.Gui \nTools \nProcess.Doc\n```\n***\n# Externalize all scripts including the default scripts\n\nHere come the best! \n\n\u003e ***THE SCRIPT TO END ALL SCRIPTS***\n*(Frogge on the RPGMaker.net discord server)*\n\nYou can externalize ALL scripts including the default scripts by using the **scripts-externalizer** instead of the **scripts-loader**!\n\nIt will create the \"**Scripts**\" folder, and make automatically the sub-folders respecting the categories defined by empty scripts like \"**▼ Scenes**\"\n\nAdd \"**scripts-externalizer**\" into your project:\n\n![screenshot](http://biloucorp.com/BCW/Joke/sample3.png)\n\nThen launch the game:\n\n![screenshot](http://biloucorp.com/BCW/Joke/sample4.png)\n\n`battle_end_me.play`\n\n![screenshot](http://biloucorp.com/BCW/Joke/sample5.png)\n\nClose and open the project...\n\nNOW THE SCRIPT EDITOR IS KILLED!!!\n\n![screenshot](http://biloucorp.com/BCW/Joke/sample6.png)\n\nDon't worry, you will retrieve all the scripts in your favorite IDE :) :\n\n![screenshot](http://biloucorp.com/BCW/Joke/sample7.png)\n\n## Security\n\n* A backup of the Scripts.rvdata2 is created\n* The scripts with no name will be also exported and named \"untitled\", \"untitled (2)\" and so on\n* The scripts with the same name will be renamed \"script (2)\", script (3)\" and so on\n\n***\n# Compiling the external scripts into the Scripts.rvdata2\n\nYou can use the **scripts-compiler** to compile the content of your \"**Scripts**\" folder into \"**Scripts.rvdata2**\"\n\nJust add the \"**scripts-compiler**\" in your scripts (replace the \"**scripts-loader**\" you used):\n\n![screenshot](http://biloucorp.com/BCW/Joke/sample8.png)\n\nLaunch the game, then close/open the project, and VOILA:\n\n![screenshot](http://biloucorp.com/BCW/Joke/sample10.png)\n\nYou can see the sub-folder is represented by the character \"■\" in front of the name. The \"**scripts-externalizer**\" understand those characters and creates the sub-folders corresponding!\n\nThe **scripts-compiler** works even if you externalized ALL scripts. :)\n\n## Security\n\n* A backup of the Scripts.rvdata2 is created\n* The \"**Scripts**\" folder is now useless, but not deleted, you have to delete it by yourself if everything is fine\n\n## Compile your scripts before releasing your game!\n\nYou will notice the game will start after few seconds (2~3) if your scripts are externalized... It's not a problem since you save A LOT of time by editing external scripts instead of internal scripts. But when you don't work on your scripts or when you want to release your game, I recommand you to compile your scripts to avoid those few little seconds lost.\n\n***\n# Sample_project_1 and Sample_project_2\n\nThose projects are the projects I used as example, you can see how the scripts are managed in **Sample_project_1** with the method of **scripts-externalize** all scripts.\n\nYou can see how the scripts are managed in **Sample_project_2** with the method of **scripts-loader** that loads just the scripts you want to externalize.\n\nThat's all, folks! \u003c3","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frmex%2Fbuildozer","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Frmex%2Fbuildozer","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frmex%2Fbuildozer/lists"}