About RBXMod


Purpose

RBXMod was developed in response to Roblox dropping support for private modules, but its purpose is much broader. RBXMod helps support a fair-play economic environment that encourages solutions to difficult problems and sharing. It provides services that Roblox currently does not offer like:

  • protected modules
  • universe scripts
  • cross-game communication
  • database support
  • C/C++ api access

In essence, RBXMod is here for YOU, developers. It protects your assets while giving you access to the tools you need to get the job done.

Methodology

RBXMod works by hosting reviewed Lua modules in the Amazon Web Service (AWS) on Elastic Cloud Computing (EC2) instances. Roblox games can then require these modules and use them like a normal module. The advantages are that:

  • module code cannot be stolen
  • game developers know that the reviewed code is safe
  • module developers can control which games have access
  • module code can easily communicate between places and games when allowed by the game developers
  • using the cloud takes a load off of game servers, reducing lag
  • Lua code can be JIT compiled for much faster execution

To take full advantage of the service, RBXMods are split into two parts: a protected module and a public module. The public module is a regular Roblox module script free model that runs on each game server that requires the RBXMod. This public module is the information gatherer for the protected module: it forwards any module calls to the protected module along with any required game information. This helps reduce how often the protected module needs to cross the network to ask for additional information. The protected module then receives this information, processes it, and returns a response back to the public module which can either directly interact with Roblox instances or return the information back to the module caller.

Only one version of each protected module runs in the cloud at a time. The module runs in its own process, and creates a new thread for every Roblox server that requires it. Each thread then sequentially handles requests that come from the game server. To communicate from public modules to protected modules and protected module threads to other protected module threads, scripts use a message passing interface with functions like peek and pop. This will allow the main protected module thread (the only one running independent of a game), server protected module threads, and the public modules running on each Roblox server to either continue to run while waiting for messages or pause to wait.

Caveats

With great power comes great responsibility, and RBXMods are no exception. All RBXMods will undergo a review process each time they are modified and publically released. This takes time, and therefore money. In addition, RBXMods don't benefit from ads, subscriptions, or virtual currency purchases like Roblox does, but the resources RBXMods use are not free. Therefore, it is most advantagous to use RBXMods when there is a potential to recouperate these costs.