Muledump Asset Compiler is a command-line utility that provides tools for downloading ROTMG game files, extracting Unity assets, generating Muledump renders, and a bit more.
Combined with its Lambdas it can automatically publish updated game assets and Muledump Renders within minutes after Deca publishes updated game files.
Muledump Renders Canary - Automated publication of latest Muledump Renders resources before they are validated and published to Muledump
Realm of the Mad God Assets Repository - Automated publication of latest ROTMG Unity game assets
Both publications check for updates every 30 minutes (first assets, then renders).
The individual components run cross-platform on various Linux and Windows versions. You will need the following packages installed:
- Nodejs v18 or higher
- Python 3.9 (a higher version works, but you'll need to update the Pipfile in muledump-render)
- VisualStudio Tools with Nodejs, Python, and Desktop Development with C++
Currently, only one bootstrap script is provided - run-linux-al2023.sh
- This is tested and works on AWS EC2 Amazon Linux 2023.
Getting this program to work on other Linux variants should not require any substantial changes to the script. Likely, just updating how the OS package manager is used will be sufficient. If you make a variant, feel free to submit a pull request or issue.
Windows and Graviton scripts will be coming soon(tm).
When running locally and not with muledump-stack-updater
the output folder must be empty before starting the program.
Clone the repo and cd into it, then run:
sh run-linux-al2023.sh
This will bootstrap the server by installing all dependencies, downloads the game files, and then running rotmg-asset-ripper and muledump-render.
Assuming it finishes successfully, all generated content will be stored in ../output.
All exported data can optionally be synced to an S3 bucket.
Default runtime configuration can be modified at the top of the file.
If utilizing an AWS bucket for storing/publishing resources, all optional runtime arguments become required.
Supports the following runtime arguments:
--game-dest (default: ../output/rotmg-game-files
)
The location of game file storage
--asset-dest (default: ../output/rotmg-game-assets
)
The location of ROTMG assets storage
--renders-dest (default: ../output/muledump-renders
)
The location of renders storage
--resources (default: $game_dest/RotMG Exalt_Data/resources.assets
)
The location of the resources.assets
ROTMG game file
--ar (default: ./vendor/AssetRipper-linux-x64
)
The path to the AssetRipper binary
--buildhash (optional, but recommended)
The current ROTMG game build hash (used in the muledump-renders/constants.js
header for informational purposes only)
--aws-profile (optional)
The AWS profile to use for syncing outputted data to S3
In order to utilize the AWS features, you must create an AWS profile with aws configure --profile <string>
before running the program.
--s3-bucket (optional)
The AWS S3 bucket name
--s3-prefix-assets (optional)
The AWS S3 key prefix for ROTMG assets
--s3-prefix-renders (optional)
The AWS S3 key prefix for Muledump renders
--buildinfo-https (optional)
The HTTPS URL for the current rotmg-assets/build-info.json
--buildinfo-s3 (optional)
The S3 URL for the current rotmg-assets/build-info.json
Extracts all Unity assets and converts new spite atlases into the old style spritesheets.
Supports the following runtime arguments:
--ar
The path to the AssetRipper binary
--resources
The path to resources.assets
in ROTMG game data files
--dest
The destination path for program output
Parses all ROTMG asset files and generates the corresponding Muledump Renders scripts (constants.js
, renders.png
, and sheets.js
).
Supports the following runtime arguments:
--dest
The destination path for program output
--source
The source path or remote URL for ROTMG assets
--game-version
The version number of the game files
--buildhash The build hash of the game files
Downloads all game files for the latest (or specified) build.
Supports the following runtime arguments:
--dest
The destination path for program output
--buildurl
The URL to use for determining the latest build
--buildhash The buildhash to use instead of the latest build
Determines ROTMG game client version from game files.
Supports the following runtime arguments:
--source
The ROTMG assets path to search in
Simple tool to generate directory index HTML files
Supports the following runtime arguments:
--source
The source to generate HTML files for
--name
The name of the index being generated
The Lambda programs are built and tested specifically for use with AWS Lambda; however, with a little bit of additional work you can run them anywhere.
Determines the current ROTMG game build hash and version number, and then stores the information to rotmg-assets/build-info.json
.
This runs a modified version of rotmg-version-parser
utilizing remote resources instead of local resources.
Launches a temporary EC2 instance that downloads and runs muledump-asset-compiler
.
Can be configured to run on a schedule that checks for a new version detected in rotmg-assets/build-info.json
.
- All hardcoded paths removed and replaced with config vars
- Command-line arguments are used to dynamically update
config.json
at runtime
- All hardcoded paths removed and replaced with config vars
- Added support for accessing ROTMG assets from local files
Jakcodex operates its own Discord server at https://discord.gg/JFS5fqW.
Feel free to join and ask for help getting setup, hear about new updates, offer your suggestions and feedback, or just say hi. We love to hear from the community!
If you encounter a bug, have a feature request, or have any other feedback you can also check out the issue tracker to see if it's already being discussed. If not then you can submit a new issue.
Copyright 2023 Jakcodex
Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
-
Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
-
Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
-
Neither the name of the copyright holder nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.