All Projects → erri120 → rpgmpacker

erri120 / rpgmpacker

Licence: MIT license
Simple CLI program for packaging RPG Maker games to use in an automated build/deploy pipeline.

Programming Languages

typescript
32286 projects
javascript
184084 projects - #8 most used programming language

Projects that are alternatives of or similar to rpgmpacker

Nevergreen
🐤 A build monitor with attitude
Stars: ✭ 170 (+794.74%)
Mutual labels:  continuous-integration, continuous-deployment
Platform Ststm32
ST STM32: development platform for PlatformIO
Stars: ✭ 201 (+957.89%)
Mutual labels:  continuous-integration, continuous-deployment
Xrm Ci Framework
xRM CI Framework provides you with the tools automate the build and deployment of your CRM Solution. Using the framework to implement a fully automated DevOps pipeline will allow you to deploy more frequently with added consistency and quality.
Stars: ✭ 172 (+805.26%)
Mutual labels:  continuous-integration, continuous-deployment
Syncd
syncd是一款开源的代码部署工具,它具有简单、高效、易用等特点,可以提高团队的工作效率.
Stars: ✭ 2,065 (+10768.42%)
Mutual labels:  continuous-integration, continuous-deployment
generator-nullfactory-xrm
Yeoman generator for Dynamics 365 Solutions. It generates a project structure that facilitates the quick creation builds and automated release strategies with minimal effort.
Stars: ✭ 15 (-21.05%)
Mutual labels:  continuous-integration, continuous-deployment
Argo Ci
Continuous integration and delivery for Kubernetes powered by Argo workflows.
Stars: ✭ 171 (+800%)
Mutual labels:  continuous-integration, continuous-deployment
Wflow
🐆 EXPERIMENTAL -- Runs GitHub Actions workflows locally (local) -- Don't run your YAML like a 🐪
Stars: ✭ 187 (+884.21%)
Mutual labels:  continuous-integration, continuous-deployment
Cdeasy
Continuous Delivery made Easy ;)
Stars: ✭ 143 (+652.63%)
Mutual labels:  continuous-integration, continuous-deployment
Webhookd
A very simple webhook server launching shell scripts.
Stars: ✭ 250 (+1215.79%)
Mutual labels:  continuous-integration, continuous-deployment
Rok8s Scripts
Opinionated scripts for managing application deployment lifecycle in Kubernetes
Stars: ✭ 248 (+1205.26%)
Mutual labels:  continuous-integration, continuous-deployment
Github Actions For Desktop Apps
This repo contains a sample WPF application to demonstrate how to create CI/CD pipelines using GitHub Actions.
Stars: ✭ 156 (+721.05%)
Mutual labels:  continuous-integration, continuous-deployment
k8s.ecoysystem.apps
kubernetes(k8s) ecosystem applications written c#, including micro-service(aspnetcore.webapi) and health checks etc. the goal is automatic complete continuous integration, delivery, deployment by committing code to the respository. so i will continue to be iterated...
Stars: ✭ 16 (-15.79%)
Mutual labels:  continuous-integration, continuous-deployment
Fledge
Fledge: A CI/CD tool for Flutter
Stars: ✭ 152 (+700%)
Mutual labels:  continuous-integration, continuous-deployment
badwolf
Docker based continuous integration, continuous deployment and code lint review system for BitBucket
Stars: ✭ 88 (+363.16%)
Mutual labels:  continuous-integration, continuous-deployment
Terrahub
Terraform Automation and Orchestration Tool (Open Source)
Stars: ✭ 148 (+678.95%)
Mutual labels:  continuous-integration, continuous-deployment
Buildhelpers
Helper functions for PowerShell CI/CD scenarios
Stars: ✭ 174 (+815.79%)
Mutual labels:  continuous-integration, continuous-deployment
Websiteone
A website for Agile Ventures
Stars: ✭ 132 (+594.74%)
Mutual labels:  continuous-integration, continuous-deployment
Build
Netlify Build runs the build command, Build Plugins and bundles Netlify Functions.
Stars: ✭ 135 (+610.53%)
Mutual labels:  continuous-integration, continuous-deployment
Rocket
Automated software delivery as fast and easy as possible 🚀
Stars: ✭ 217 (+1042.11%)
Mutual labels:  continuous-integration, continuous-deployment
circle
R client package for the Circle CI API
Stars: ✭ 12 (-36.84%)
Mutual labels:  continuous-integration, continuous-deployment

rpgmpacker

Simple CLI program for packaging RPG Maker games to use in an automated build/deploy pipeline.

  • Supported RPG Maker versions and platforms:
    • RPG Maker MV
      • Windows
      • OSX
      • Linux
      • Browser
      • Mobile: not supported
    • RPG Maker MZ
      • Windows
      • OSX
      • Linux: requires manual configuration, see Linux for MZ
      • Browser/Mobile
  • Supported deployment features:
    • image and audio encryption with an encryption key
    • using hardlinks instead of copying files
    • deploying for multiple platforms at once
    • excluding unused files

Usage

Options:
      --help           Show help                                       [boolean]
      --version        Show version number                             [boolean]
      --input          Path to the input folder              [string] [required]
      --output         Path to the output folder             [string] [required]
      --rpgmaker       Path to the RPG Maker installation folder
                                                             [string] [required]
      --platforms      Platforms to build for
    [array] [required] [choices: "Windows", "OSX", "Linux", "Browser", "Mobile"]
      --encryptAudio   Encrypt audio files with the provided encryption key
                                                      [boolean] [default: false]
      --encryptImages  Encrypt images with the provided encryption key
                                                      [boolean] [default: false]
      --encryptionKey  Encryption key                                   [string]
      --exclude        Exclude unused files           [boolean] [default: false]
      --hardlinks      Use hardlinks instead of copying files          [boolean]
      --noempty        Remove empty folders after execution            [boolean]
  -d, --debug          Activate debug mode                             [boolean]

Example command:

npx rpgmpacker \
--input "E:\\Projects\\RPGMakerTest\\src\\Template" \
--output "E:\\Projects\\RPGMakerTest\\out-js\\MV" \
--rpgmaker "M:\\SteamLibrary\\steamapps\\common\\RPG Maker MV" \
--hardlinks \
--noempty \
--exclude \
--debug \
--platforms "Windows" "OSX" "Linux"

The platforms options has to come last because it accepts an array of strings. I highly recommend you use the hardlinks option for faster speeds. If you don't know what hardlinks are, take a look at the Wikipedia article, the Win32 docs or an article from Linux Handbook.

The exclude option works is the same as the "Exclude Unused Files" option from the Deployment Window in RPG Maker. This was the most tedious feature to implement because it required parsing every JSON file to figure out which assets are in use and which are not. Please report any inaccuracies with this feature enabled.

Linux for MZ

RPG Maker MZ does not include a Linux build of NW.js. If you want to provide a Linux build of your game you have to manually download the build from here and extract it to your MZ installation folder:

Linux for RPG Maker MZ

I don't know why they removed this option going from MV to MZ but since this is an unofficial workaround you should play-test the output before shipping it.

Encryption

The "encryption" offered by RPG Maker is a joke. A better word might be "obfuscating". Lets take a look at the top secret highly secure encryption standards that RPG Maker employs to protect your assets:

Only image (.png) and audio (.ogg and .m4a) files can be encrypted. RPG Maker starts by writing a new header:

52 50 47 4D 56 00 00 00 00 03 01 00 00 00 00 00

The file signature is 8 bytes long: 52 50 47 4D 56 00 00 00 00 with the first 5 bytes standing for RPGMV, then we get 3 bytes for the version number: 00 03 01 and the rest is just filler zeroes. This header is the same for MV and MZ.

Next up is the encryption key that you provided which is hashed using MD5, an algorithm deemed insecure by NIST: 1337 -> e48e13207341b6bffb7fb1622282247b. The first 16 bytes of the input file will now be manipulated using an XOR operation:

buffer[i] = buffer[i] ^ key[i]

There is no IV block, there is no block chaining, these are just unrelated XOR operations. Finally the unsecure MD5 hash gets written into data/System.json:

"hasEncryptedImages": true,
"hasEncryptedAudio": true,
"encryptionKey": "e48e13207341b6bffb7fb1622282247b"

The entire engine is written in JavaScript so you can just open js/rpg_core.js and find the decryption functions if you want. This is not secure, this is no encryption, this is just obfuscating the first 16 bytes of a file and changing the file extension so users can't view the file directly.

Projects using this tool

Changelog

See CHANGELOG.md for the entire history.

License

This project is under the MIT License, see LICENSE for more information.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].