Shell as a Service

The ultimate debugging tool for RPG Maker XP & Pokémon Essentials

Marin's Utilities are required. Get them here.

Download Shell as a Service here.

Animation

Originally built for my fangame, Pokémon as a Service, Shell as a Service is a developer tool that offers an environment for debugging and extending the game's capabilities during runtime (plus it's nice for just messing around in general). This resource is still a work-in-progress and will contain some minor bugs, but it should be more than ready for prime time.

The Sessions

A bare-bones console session can be started with ConsoleSession.new at any time. Those looking to start a console session upon bootup should place the code somewhere in Main, preferably at the top of the section. There is an additional ConsoleSession_Interactive class that displays some minor information during startup, but otherwise behaves the same. An additional ConsoleSession_Ingame class is supplied, accessible at any time while pressing CTRL + S in-game. There are commands exclusive to this class, and a couple that can not be accessed from it. More on those later.

The Commands

Shell as a Service functions similarly to Unix shells like Bash or Zsh. To give a command, enter its name and any potential arguments:

Command basics 1: echo

Passing invalid commands or arguments results in an error:

Command basics 2: errors

The shell ignores all excess whitespace. Surround your argument in double quotes to include the whitespace, like this:

Command basics 3: whitespace

When using the eval command, either use single quotes or escaped double quotes when dealing with strings:

Command basics 4: strings

Speaking of strings: string together multiple commands with ; or &&:

Command basics 5: && and ;

Some commands take optional options. For example, the echo command accepts three possible options:

Command options: echo

All of the options can be passed at once, too.

Command options: all at once

Oh, and there's aliasing as well!

Command aliasing

There are certain commands that take subcommands. For example, the config command has five different subcommands. If you are feeling a little overwhelmed, don't worry! The help command is here to, well, help!

Command: help

Here's what the subcommands look like in action:

Subcommands

Some commands, like item and pkmn are only accessible inside an in-game session. There are two commands that are only accessible outside the game:

Restoretool & Wipetool

Restoretool

Restoretool and Wipetool are console applications designed for backing up, restoring and removing save data. All backups go into their own folder called SaveBackup. Restoretool creates this folder for you. Both of these applications are very basic, and I will be improving them in the future.

Multieval

Multieval is a special command that allows for multi-line code input. This allows you to modify your game's code during runtime. However, please note that changes made with Multieval are not saved and thus will not persist after the game closes.

Multieval

Creating new commands is simple. As a demonstration, here's me creating a new console command inside the console:

Demonstration

The SAAS_Core script section contains lengthy documentation regarding the ConsoleBase and ConsoleCommand classes as well as the CommandValidation module. If you're interested in extending SAAS, consider reading it.

Have fun!

Goodbye