RASM - Create simple scripts with ease!

About

RASM, which stands for Roblox Assembly, is an attempt to create an extremely simplified assembly-like language that will help non-scripters create small scripts for their games.

RASM converts a special RASM syntax into Lua code to be used in ServerScripts. In the future, I may include a ServerScript/LocalScript option toggle.

This isn’t just a plugin either! You can install the rasm npm package with npm install rasm -g and use the CLI to convert your .rasm files.

If you want to directly communicate with the API, you can make a POST request to https://rasm-website.vercel.app/api/convert with a body of:

{
    "rasm": "RASM_CODE_HERE"
}

Links

Roblox Plugin: RASM Converter - Roblox
NPM Package: rasm - npm
GitHub Repository: https://github.com/R0bl0x10501050/RASM

Usage

Roblox

  1. Install the plugin
  1. Open the plugin and type the following into the input box (top)
SET a 50;
PRINT a;
  1. Click CONVERT & copy the text provided in the output box (bottom)

External Editor

Refer to the README of the package.

Commands

It is important to separate lines with a semicolon!

Expand
  • ERROR
    Input: ERROR a b c;
    Output: error(a, b, c)
  • KICK
    Input: KICK {plrName: string} [reason: string];
    Output: (see below)
do
    local AUTO_VARIABLE_PLAYER = game.Players:FindFirstChild("R0bl0x10501050")
    AUTO_VARIABLE_PLAYER:Kick()
end
  • PRINT
    Input: PRINT a b c;
    Output: print(a, b, c)
  • RUN
    Input: RUN HttpService GetAsync "https://google.com";
    Output: game:GetService("HttpService"):GetAsync("https://google.com")
  • SET
    Input: SET {varName} {varValue}; (SET a "hi";)
    Output: local varName = varValue
  • UPDATE
    Input: UPDATE {varName} {varValue}; (UPDATE a 50;)
    Output: varName = varValue
  • WAIT
    Input: WAIT {amount: number};
    Output: task.wait(amount)
  • WARN
    Input: WARN a b c;
    Output: warn(a, b, c)

Example

Input:

PRINT "Hi, how are you?";
SET A 50;
OOF "R0bl0x10501050";
KICK "Telamon";
WAIT 5;
WARN A;
RUN HttpService GetAsync "http://localhost:8080";
PRINT "DONE";

Output:

print("Hi, how are you?")
local A = 50
do
    local AUTO_VARIABLE_PLAYER = game.Players:FindFirstChild("R0bl0x10501050")
    AUTO_VARIABLE_PLAYER.Character.Humanoid:TakeDamage(math.huge)
end
do
    local AUTO_VARIABLE_PLAYER = game.Players:FindFirstChild("Telamon")
    AUTO_VARIABLE_PLAYER:Kick()
end
task.wait(5)
warn(A)
game:GetService("HttpService"):GetAsync("http://localhost:8080")
print("DONE")

-- Converted by RASM 1.0.2
-- Visit https://www.npmjs.com/package/rasm for more information.

Final Words

As time goes on, more commands will be added. StudioCLI will also receive a rasm command in the next release to replicate how it works on the command line.

Thanks for reading!

19 Likes

This is interesting. Haven’t seen this done before. I actually know ASM by heart so, this is pretty weird for me to see it like this given the fact that ASM translates to machine code and this translates to Lua. I think for what it’s worth, pretty cool.

5 Likes

Like OP said, to help people that can’t script make simple scripts for their games without needed to use any code that may come across as confusing.

This resource isn’t intended to be used for large games

2 Likes

This resource is extremely simple
All you do it require the package then run the code with RASM.luau(string), I don’t see how that’s not beginner friendly at all

const RASM = require('rasm');
const rasm = new RASM();

const str = `
SET x 50;
SET y 10;
SET z 20;

WAIT 10;
SET SUM x*y*Z
PRINT \`the sum of xyz is ${sum}\`
PRINT \`done\`
`
console.log(RASM.luau(str))

I doubt this code will work since i havent done much research about this module, but this is probably what it would look like

1 Like

Everything but the SET SUM will work but I also forgot to mention that all RASM methods are asynchronous.


@Marimariius
Although it will most likely be forgotten in a month, I would like to hear your reasons for why you believe this module is not beneficial.


update it didnt work :weary:
this is probably just a issue with how ive set up the node environment but not sure (npm init, npm i rasm, then i wrote the code in index.js)

you don’t need bootleg assembly in roblox at all

1 Like

While this may look like a good idea at first, I think it would be better for people to learn Lua. Lua is a quite simple thing and is used widely outside of Roblox too. The idea is nice, however I still think people should learn lua.

You can build website backends in lua, a lot of games/game engines support lua etc.

So I think it is better for beginners to learn lua.

Just look at List of applications using Lua - Wikipedia & Category:Lua (programming language)-scripted video games - Wikipedia as an example.

3 Likes

It’s not a bootleg assembly. From the post description, I’ve made it clear that it is a syntax that resembles an extremely simplified version of ASM. It does not come close to being an “assembly language for Roblox”. This is solely for beginners to create basic scripts. Think scratch in text form.

It is a good idea to learn Lua, but it seems unreasonable if all you need is a few lines of generic code. This isn’t meant to replace Luau, given its limited commands.

2 Likes

I think this is gatekeeping and a super inappropriate response. You should be more welcoming; it’s a public forum.

It’s a fun idea. Maybe the scripting use case isn’t apparent but there’s nothing wrong with an esoteric language either. If nothing else it can be used as a learning resource.

6 Likes

You’re being unnecessarily hostile about this for what some would most definitely find to be a useful resource, despite your bold claim that nobody would use it (when did you get to decide what everyone will do?)

When would someone use this? It looks to me like it could be useful for basic things, as the name literally describes, such as allowing players in certain kinds of games to create basic pieces of code or potentially even mathematical expressions to use for something within the game among other things.

I haven’t actually checked out this resource myself yet, but it looks to me to be a useful and great resource that I can see many use cases for, outside of it’s original purpose of helping people who don’t know how to script.

saw this post a while ago, didn’t expect to see someone so unsupportive after I looked back

btw I love how you did an OOF command, nice

1 Like

It’s an npm module for those who use VSCode…

1 Like

I’ll just bump this brilliant response here.

1 Like

You seem to have completely overlooked the fact that the npm module is an optional method of using it, if you actually took a proper look at the post, you’d see there is a Roblox plugin too as an option.

It doesn’t matter if it is only gonna be useful to a small amount of developers, that doesn’t immediately nullify the fact that it is still a good, and useful resource for developers, you are being extremely hostile and rude about this.

The way you phrased your message made you come across as though you were implying that absolutely nobody would find this useful, it definitely has some use in game development, even if you fail to see it because you are simply not the target audience that this resource was intended to be useful to.

If you don’t find a resource useful to yourself, that’s perfectly fine. But don’t be toxic about it and make it out like there is absolutely nobody who would find this resource to be of use to them and be unnecessarily hostile.

I don’t see much use in this. It appears that this is based off of assembly, which is too simple that it’s a bit weird to code with. Besides, in order for someone to actually use it, they must know at least the basics of coding, and do you think a kid is gonna know that? Also, how would you expect for them to get support or evolve? It’s a decent resource, but I just don’t see much use it in

Also, the only community that I think would be excited for this would be people going from assembly to Lua, which is easy enough (going from a hard to easy language is easy, at least for me)

Actually, they don’t. All they need to know is that names are surrounded by quotes. Important commands like WAIT 5 and KICK SomePlayer make complete sense if read out loud, without any code context.

I think this is very cool however this resource seems more for jokes than it does to help new developers. This looks like it’d be mildly difficult to learn and would require youtube tutorials to teach.