Skip to content

Releases: Program132/BlueprintRobloxEditor

V1.2: Math, String, Booleans

24 Apr 14:14

Choose a tag to compare

Issues fixed

Math

math lib nodes added, source: Lua - Math Library

1 math.abs(x)
Returns the absolute value of x.

2 math.acos(x)
Returns the arc cosine of x (in radians).

3 math.asin(x)
Returns the arc sine of x (in radians).

4 math.atan(x)
Returns the arc tangent of x (in radians).

5 math.atan2(y, x)
Returns the arc tangent of y/x (in radians), but uses the signs of both parameters to find the quadrant of the result. (It also handles correctly the case of x being zero.)

6 math.ceil(x)
Returns the smallest integer larger than or equal to x.

7 math.cos(x)
Returns the cosine of x (assumed to be in radians).

8 math.cosh(x)
Returns the hyperbolic cosine of x.

9 math.deg(x)
Returns the angle x (given in radians) in degrees.

10 math.exp(x)
Returns the value e power x.

11 math.floor(x)
Returns the largest integer smaller than or equal to x.

12 math.fmod(x, y)
Returns the remainder of the division of x by y that rounds the quotient towards zero.

13 math.frexp(x)
Returns m and e such that x = m2e, e is an integer and the absolute value of m is in the range [0.5, 1) (or zero when x is zero).

14 math.huge
The value HUGE_VAL, a value larger than or equal to any other numerical value.

15 math.ldexp(m, e)
Returns m2e (e should be an integer).

16 math.log(x)
Returns the natural logarithm of x.

17 math.log10(x)
Returns the base-10 logarithm of x.

18 math.max(x, ...)
Returns the maximum value among its arguments.

19 math.min(x, ...)
Returns the minimum value among its arguments.

20 math.modf(x)
Returns two numbers, the integral part of x and the fractional part of x.

21 math.pi
The value of pi.

22 math.pow(x, y)
Returns xy. (You can also use the expression x^y to compute this value.)

23 math.rad(x)
Returns the angle x (given in degrees) in radians.

24 math.random([m [, n]])
When called without arguments, returns a uniform pseudo-random real number in the range [0,1). When called with an integer number m, returns a uniform pseudo-random integer in the range [1, m]. When called with two integer numbers m and n, returns a uniform pseudo-random integer in the range [m, n].

25 math.randomseed(x)
Sets x as the "seed" for the pseudo-random generator: equal seeds produce equal sequences of numbers.

26 math.sin(x)
Returns the sine of x (assumed to be in radians).

27 math.sinh(x)
Returns the hyperbolic sine of x.

28 math.sqrt(x)
Returns the square root of x. (You can also use the expression x^0.5 to compute this value.)

29 math.tan(x)
Returns the tangent of x (assumed to be in radians).

30 math.tanh(x)
Returns the hyperbolic tangent of x.

String

string lib nodes added, source: string | Documentation

1 string.byte(s, i, j)
Returns the internal numerical codes of the characters s[i], s[i+1], ..., s[j].

2 string.char(...)
Receives zero or more integers and returns a string with length equal to the number of arguments, where each character has the internal numerical code equal to its corresponding argument.

3 string.find(s, pattern, init, plain)
Searches for the first occurrence of the pattern in the string s and returns the start and end indices of the match.

4 string.format(formatstring, ...)
Returns a formatted version of its variable number of arguments following the description given in its first argument.

5 string.gsub(s, pattern, repl, n)
Returns a copy of s in which all (or the first n) occurrences of the pattern have been replaced by the given replacement.

6 string.len(s)
Returns the length of a string.

7 string.lower(s)
Returns a copy of a string in which all uppercase letters are changed to lowercase.

8 string.match(s, pattern, init)
Searches for the first match of the pattern in the string s. If it finds one, then match returns the captures from the pattern; otherwise it returns nil.

9 string.rep(s, n)
Returns a string that is the concatenation of n copies of the string s.

10 string.reverse(s)
Returns a string that is the string s reversed.

11 string.split(s, separator)
Splits a string into parts based on defined separator characters, returning an ordered table of results.

12 string.sub(s, i, j)
Returns the substring of s that starts at i and continues until j.

13 string.upper(s)
Returns a copy of a string in which all lowercase letters are changed to uppercase.

Boolean

boolean logic nodes added

1 A and B
Returns true if both A and B are true. If A is false, returns A; otherwise returns B.

2 A or B
Returns true if either A or B is true. If A is true, returns A; otherwise returns B.

3 not A
Returns the opposite boolean value of A. If A is true, returns false; if A is false, returns true.

4 A == B
Returns true if A is exactly equal to B.

5 A ~= B
Returns true if A is not equal to B.

6 A > B
Returns true if A is strictly greater than B.

7 A >= B
Returns true if A is greater than or equal to B.

8 A < B
Returns true if A is strictly less than B.

9 A <= B
Returns true if A is less than or equal to B.

Example

image image

V1.1 : A new start !

24 Apr 00:27

Choose a tag to compare

BRE is a visual, blueprint-style programming environment (inspired by Unreal Engine) for Roblox. It allows you to create complex systems without writing a single line of code, while generating Luau code in the background.

Moving from a web application to a Studio plugin eliminates the friction between design and testing. Developers can now prototype their game mechanics in blueprints and see them run immediately in their game, all while benefiting from the power of Roblox's scripting engine.

NOTE: There are very few nodes... but you can create them yourself ;)

image

image

image

V1.0: For in ipairs/pairs, new events, Local Player and more !

24 Nov 13:34

Choose a tag to compare

News

New statement nodes:

  • For in pairs
  • For in ipairs

New nodes from Color3:

  • new
  • fromHSV
  • fromRGB

New nodes from BrickColor:

  • New
  • Random
  • To RGB

New enums nodes:

  • EasingDirection
  • EasingStyle

New nodes for TweenService:

  • TweenInfo.new
  • Create
  • Cancel
  • Play

New nodes for Local Player & Humanoid:

  • Get Local Player
  • Get Character
  • Get Humanoid
  • Get Humanoid State
  • Humanoid Take Damage
  • Get Humanoid State

UDim2 nodes:

  • UDim2.new
  • UDim2.fromScale
  • UDim2.fromOffset

New nodes for RemoteEvents:

  • FireClient
  • FireServer

New events:

  • Died (Humanoid)
  • HealthChanged (Humanoid)
  • StateChanged (Humanoid)
  • ChildAdded
  • ChildRemoved
  • Changed (Instance, when a property is updated)
  • OnServerEvent
  • OnServerInvoke

Example

For In

image image

Color3

image image

Tweens

image image

Player & Humanoid

image image

ChildAdded

image image

Remote Events

image image

Kill Brick Example

image image
{
    "version": "2.0",
    "scripts": [
        {
            "id": "script-1763990649166",
            "name": "Main",
            "nodes": [
                {
                    "id": "node-1763990657293",
                    "name": "touched",
                    "type": "EVENT",
                    "x": 49,
                    "y": 350.609,
                    "inputs": {}
                },
                {
                    "id": "node-1763990664191",
                    "name": "getproperty",
                    "type": "FUNCTION",
                    "x": -290,
                    "y": 528.609,
                    "inputs": {
                        "PropertyName": "Parent"
                    }
                },
                {
                    "id": "node-1763990677640",
                    "name": "isa",
                    "type": "FUNCTION",
                    "x": 50,
                    "y": 543.609,
                    "inputs": {
                        "className": "Player"
                    }
                },
                {
                    "id": "node-1763990729292",
                    "name": "if",
                    "type": "METHOD",
                    "x": 398,
                    "y": 353.609,
                    "inputs": {}
                },
                {
                    "id": "node-1763990762539",
                    "name": "start",
                    "type": "EVENT",
                    "x": -34,
                    "y": 45.609,
                    "inputs": {}
                },
                {
                    "id": "node-1763990772704",
                    "name": "set",
                    "type": "METHOD",
                    "x": 643.565,
                    "y": 60.063,
                    "inputs": {
                        "name": "part"
                    }
                },
                {
                    "id": "node-1763990776970",
                    "name": "get",
                    "type": "FUNCTION",
                    "x": -279.842,
                    "y": 382.291,
                    "inputs": {
                        "name": "part"
                    }
                },
                {
                    "id": "node-1763990789907",
                    "name": "getservice",
                    "type": "FUNCTION",
                    "x": -139,
                    "y": 183.609,
                    "inputs": {
                        "ServiceName": "Workspace"
                    }
                },
                {
                    "id": "node-1763990796596",
                    "name": "findfirstchild",
                    "type": "FUNCTION",
                    "x": 242,
                    "y": 164.609,
                    "inputs": {
                        "childName": "Part"
                    }
                },
                {
                    "id": "node-1763990843329",
                    "name": "takedamage",
                    "type": "METHOD",
                    "x": 901,
                    "y": 388.609,
                    "inputs": {
                        "damage": "100"
                    }
                },
                {
                    "id": "node-1763990869957",
                    "name": "set",
                    "type": "METHOD",
                    "x": 630.223,
                    "y": 367.379,
                    "inputs": {
                        "name": "plr"
                    }
                },
                {
                    "id": "node-1763990883426",
                    "name": "gethumanoid",
                    "type": "FUNCTION",
                    "x": 626,
                    "y": 697.609,
                    "inputs": {}
                },
                {
                    "id": "node-1763990901047",
                    "name": "getcharacter",
                    "type": "FUNCTION",
                    "x": 291,
                    "y": 697.609,
                    "inputs": {}
                },
                {
                    "id": "node-1763990918423",
                    "name": "get",
                    "type": "FUNCTION",
                    "x": -47.79,
                    "y": 696.487,
                    "inputs": {
                        "name": "plr"
                    }
                },
                {
                    "id": "node-1763991061488",
                    "name": "getproperty",
                    "type": "FUNCTION",
                    "x": 415,
                    "y": 559.609,
                    "inputs": {
                        "PropertyName": "Parent"
                    }
                }
            ],
            "connections": [
                {
                    "fromNode": "node-1763990657293",
                    "fromPort": "otherPart",
                    "toNode": "node-1763990664191",
                    "toPort": "instance",
                    "type": "data"
                },
                {
                    "fromNode": "node-1763990664191",
                    "fromPort": "value",
                    "toNode": "node-1763990677640",
                    "toPort": "instance",
                    "type": "data"
                },
                {
                    "fromNode": "node-1763990677640",
                    "fromPort": "result",
                    "toNode": "node-1763990729292",
                    "toPort": "condition",
                    "type": "data"
                },
                {
                    "fromNode": "node-1763990657293",
                    "fromPort": "ExecOut",
                    "toNode": "node-1763990729292",
                    "toPort": "ExecIn",
                    "type": "exec"
                },
                {
                    "fromNode": "node-1763990762539",
                    "fromPort": "ExecOut",
                    "toNode": "node-1763990772704",
                    "toPort": "ExecIn",
                    "type": "exec"
                },
                {
                    "fromNode": "node-1763990776970",
                    "fromPort": "value",
                    "toNode": "node-1763990657293",
                    "toPort": "instance",
                    "type": "data"
                },
                {
                    "fromNode": "node-1763990789907",
                    "fromPort": "service",
                    "toNode": "node-1763990796596",
                    "toPort": "instance",
                    "type": "data"
                },
                {
                    "fromNode": "node-1763990796596",
                    "fromPort": "child",
                    "toNode": "node-1763990772704",
                    "toPort": "value",
                    "type": "data"
                },
                {
                    "fromNode": "node-176399072...
Read more

V0.9: 3D Positioning, Enums & Game Loop

23 Nov 18:15

Choose a tag to compare

Issues Solved / Fixs

Enums - New type for nodes @Program132

News

New node type to create custom enums:

{
    "type": "ENUM",
    "title": "Enum title",
    "color": [200,200,200],
    "inputs": {
        "input_name": {
            "defaultValue": "default_input_value"
            "values": [
                "value1",
                "value2",
                "value3"
            ]
        }
    },
    "outputs": [
        "output_name"
    ]
}

Enums added:

  • Material
  • HumanoidStateType

Moreover, you can add a description to your nodes :

{
    "type": "FUNCTION",
    "title": "Node",
    "description": "My description",
    "inputs": {
        "from": {
            "defaultValue": ""
        },
        "to": {
            "defaultValue": ""
        }
    },
    "outputs": [
        "Output 1"
    ]
}

New nodes about Vector3 :

  • Builder: create an Vector3 from x,y,z.
  • Add: addition of two vectors
  • Sub: substraction of two vectors
  • Mul: multiplication of two vectors
  • Div: division of two vectors
  • Get Vector3 Components : Get x,y,z from a vec3

Added CFrame nodes:

  • CFrame Builder (CFrame.new)
  • CFrame Angles (CFrame.Angles)
  • CFrame Look At (CFrame.lookAt)
  • Ge CFrame Position (cframe.Position)

Added async nodes:

  • task.wait
  • task.defer
  • task.delay
  • task.spawn

Added two events (from BasePart):

  • Touched
  • TouchEnded
  • RenderStepped from RunService
  • Heartbeat from RunService

Example

Enum Type

Image Image

Vector3

image image

CFrame

image image

Touched event

image image

V0.8 : Instance, GetService, Find Child and more !

21 Nov 18:38

Choose a tag to compare

Issues / Fixs

Due to a lot of problem with String, I decided to remove the automatic detection of values type, it means now you have to put " yourself or you can use the String node.

News

New node "Instance New" : you can create instance from Roblox Studio like :

  • Part
  • Model
  • etc.
    Make sure to specify the classname (part, model etc.) and the parent.

New node "Get Service" : you can call services from Roblox like Workspace, ReplicatedStorage, ServerScriptService and more !

New nodes to get & set a property of an instance, like get / set the name of a part !

New nodes to find a child from an instance (FindFirstChild, FindFirstChildOfClass, FindFirstChildWhichIsA, WaitForChild), I added as well IsA which return a boolean.

New async nodes:

  • task.wait
  • task.delay
  • task.defer
  • task.spawn

New events :

  • InputBegan
  • InputEnded

New enums:

  • KeyCode
  • UserInputType

Example

image image
image image
image image
image image
image image
image image
image image

V0.7: Rework + new nodes !

20 Nov 18:26

Choose a tag to compare

I reworked the backend system to address new issues I was facing, such as handling multiple events and enabling the creation of custom functions.
By the way, you can now have more than one “script”/graph in your project!

News

Fixs / Issues solved

Rework backend + new elements about frontend @Program132

Format

Make sure to follow the format, now title is mandatory !

{
    "type": "METHOD",
    "title": "My Custom Node",
    "inputs": {
        "input_name": {
            "defaultValue": "default_input_value"
        }
    },
    "outputs": [
        "output_name"
    ]
}

You can set the color of you node by the way:

{
    "type": "METHOD",
    "title": "My Custom Node",
    "color": [255,23,56],
    "inputs": {
        "input_name": {
            "defaultValue": "default_input_value"
        }
    },
    "outputs": [
        "output_name"
    ]
}

Table (Arrays + Dict)

You can create arrays using table nodes:

  • Construct Table return an empty array
  • Table Insert insert the element given in the array
  • Table Length return the length of the array

You can create dict using table nodes:

  • Construct Table return an empty dict
  • Table SET insert the element given in the dict, with the key given
  • Table Length return the length of the dict
  • Table GET return the value of the key given

Events

Two events got added:

  • PlayerAdded
  • CharacterAdded (from PlayerAdded)

Variables

GET node got an update, now it's a FUNCTION node, not METHOD.

General

Added two more nodes:

  • warn: like print but for warnings
  • error: like print but for errors

Values nodes (can use them to specifiy the real value if you want to simulate):

  • string
  • int
  • number
  • boolean

Example

image image
image image image

V0.5 : If, while, for and much more :) !

13 Nov 19:19

Choose a tag to compare

News

New node "IF":

  • Take one condition (as boolean) in inputs
  • Return 3 EXEC output: when the conditon is true, when the condition is false (else) and when the "if node is over" (next to end)

New node "WHILE":

  • Take one condition as input
  • Return 2 EXEC: one about the loop body, last one once the condition is true (next to end)

New node "FOR" (Range):

  • Take one variable (only the name, not a variable you created) as input
  • Take number for start
  • Take number for end
  • Take number for step

New nodes to convert:

  • tonumber
  • tostring

New nodes about booleans:

  • and
  • not
  • <=
  • >=
  • ==
  • ~=
  • <
  • >

New way to create custom statement (it's if definition):

{
    "color": [200,200,200],
    "type": "METHOD",
    "inputs": {
        "condition": {
            "defaultValue": "true"
        }
    },
    "outputs": [],
    "exec": ["True", "False", "Continue"]
}

Example

image

if

image image image image

while

image image image image

for (range)

image image

Next updates

  • Arrays & Dict
  • Custom function
  • Multiple scripts
  • Custom events (from Roblox)

V0.2: Fixs and more nodes about math & string

13 Nov 10:08

Choose a tag to compare

Fixs

News

New Math nodes (from math lib):

  • arctangent2
  • ceiling
  • degree
  • extract mantissa & exponent
  • floating point remainder
  • floor
  • load exponent
  • log10
  • min
  • max
  • modulo fractional
  • pi
  • positive infinity (highest value)
  • power
  • radians
  • random seed

New String nodes (from string lib):

  • concat
  • upper
  • lower
  • length
  • byte
  • char
  • reverse
  • find
  • repeat
  • replace

New format, you can now set the "title" of the node:

{
    "title": "sqrt",
    "type": "FUNCTION",
    "inputs": {
        "a": {
            "defaultValue": "0"
        }
    },
    "outputs": ["result"]
}

Example

image image image

V0.15: Fixs and more nodes !

10 Nov 23:18

Choose a tag to compare

Fixs

New

New nodes:

  • Add renamed Addition
  • Subtraction
  • Multiplication
  • Division
  • Squareroot
  • Logarithm
  • Exponential
  • Cos
  • Sin
  • Tan
  • Cosh
  • Sinh
  • Tanh
  • Arcos
  • Arcsin
  • Arctan
  • Absolute (abs)

New format to follow to create your own nodes (color is not mandatory, you can remove it):

{
    "color": [255,255,255],
    "type": "METHOD",
    "inputs": {
        "node_name": {
            "defaultValue": "<default value>"
        }
    },
    "outputs": [
    "output_name"
    ]
}

Variables:

  • Can be saved in you project file (.json) when you're clicking on the button "Save".
  • Can be loaded from a .json file.
  • SET node to update the value
  • GET node to get the value

Example

image image

V0.1 : BRE Start

09 Nov 17:47

Choose a tag to compare

The BRE project arrives with its first official version! Featuring a new system and new methods for programming in Blueprint, for "transforming" into Luau, and a very important element, an editor, in this case a web application.

Additions

  1. New method to convert from Blueprint to Luau
  2. Editor available on a website
  3. START node
  4. PRINT node
  5. ADD node

Removals

  1. Old backend system for coding in Blueprint, replaced by a simpler and more efficient one
  2. Nodes were not defined in JSON format

Upcoming Changes

  1. Addition of blocks for variables
  2. Basic blocks, such as those for math, strings, etc.